The functional mess that is Oracle JDeveloper

By corporate mandate I’ve been using Oracle JDeveloper 10.1.3.1.0.3984, that version number is ridiculous and ought to tell us something, to develop Java EE web applications on and off for about 6 months now and I’ve never been so frustrated with a development environment in my life. I hear it from seasoned Oracle developers that the wizards are great, you can create web service in a few clicks, you can create an EJB effortlessly, and the application has come such a long way, my God how bad was it before. Honestly, I don’t give a flying fuck what you can do with the wizards if the core application is unusable. Coming from an Eclipse/RAD background my gripes are probably slanted, I’m used to being able to do simple things easily and quickly without the IDE flaking out on me completely.

Gripe #1 - The Application Project Structure is Horrendous
JDeveloper requires that you put your J2EE modules into an application project, this means that instead of just putting just creating the different modules of your application as individual projects, they must all live inside of an application. At an enterprise level this is extremely cumbersome, if I share an EJB and a 15 other Java modules among for different web applications I have to store sets of modules in different applications and then jump through hoops to get them to work with each other in order to build and run the application locally. It also causes issues within CVS or Subversion as far as how the modules are organized and you’re ability to figure out which application a module is inside. Eclipse on the other hand allows you to add projects/modules and multiple applications to your workspace based on a modular component structure and then just map these projects together based on classpath and runtime dependencies, a much more intuitive and flexible way to do things.

Gripe #2 - There’s no quick easy way to open an artifact
What may seem like a minor thing to some developers, that don’t work in huge enterprise web applications, I need an easy way to get to jsp’s, classes, css, js , image files, etc. JDeveloper only provides you a shortcut to get classes and recently opened files by name and even this is flawed. If you use Ctrl - you can do a class look up, but you better remember the beginning of the name of the class and not want to use any regular expressions. Ctrl + let’s you open recently opened artifacts quickly, but good luck finding something that you haven’t opened yet if it’s not a Class file. Eclipse on the other hand has Ctrl+Shift+R and Ctrl+Shift+T, these are the best I’ve seen, Ctrl+Shift+R let’s you look up any resource in your workspace - you can even use wildcards and regular expressions and choose the resource to open. Ctrl+Shift+T allows you to limit your look up to classes, which you can do with Ctrl+Shift+R, but it has one additional gem, you can look up classes inside of jars. Trust me on this if you’re an Eclipse user and you start using these shortcuts you’ll never work the same way again, if you develop thing with names that make sense you’ll be able to find the code you’re looking for without even expanding the navigator or tracing through the code. Don’t tell me either that I could just do a search, this is time intensive in any IDE, I need to open a file I know the name I want the file now.

Gripe #3 - Application and System Navigator cumbersome
The navigator’s are used to dig through the application hierarchy in search of that piece of code, or file, or to create/rename/delete files, they’re equivalent to the Navigator and Package Explorer in Eclipse. However a few things are missing from JDeveloper. I can’t collapse the entire hierarchy, I have to hit each node I’ve expanded to collapse everything down, I use this often if I’ve dug into the wrong structure looking for something and just dug too far and want to start back at the top. The Java packages and the web content get the same folder treatment, if I select a number to show at a time it’s going to show that number of folders before showing hierarchy, in Eclipse I always get a package explorer that shows complete disparate packages and a folder view that let’s me dig in by directory. It just looks weird and get’s visually confusing when looking at directories expressed this way, packages just make sense to be represented this way because this is how you use them when importing into a class. I’m sure it’s just a personal gripe, but that’s what this is, a gripe.

Gripe #4 - Window pane management and docking is painful at best
Okay, this one just frustrated the hell out of me. Eclipse puts everything in perspectives, inside the perspectives the panes are called views, the views can be moved around, docked, closed, opened to your liking in a perspective and then you can save that perspective with a name. Say you move something around in a perspective and you’ve totally screwed up the way your environment is configured, you can Reset the perspective and it will revert to the saved state. Genius!!!! I spent an hour in JDeveloper just the other day trying to get my console window to sit at the bottom of the main window under the Navigator and the main code window, dragging and dropping and docking is less than functional in this application, I finally gave up and minimized the Console to the bottom so that I could see my code and I just click on it when I want to see it. There is no way to reset to the default view, not an intuitive one that’s for sure and it’s ruined my environment which is where a coder lives.

Gripe #5 - Version Control support is completely lacking
Last or not least CVS and SVN support are such crap in JDeveloper that my entire team has agreed not to use it and instead we use Eclipse to synchronize with Version control. So I sneak into Eclipse and use it for editing all my files that aren’t Java classes. Which could be another gripe, why do I have to have two IDE’s just to do the work of one.

I’m sure I’ll get an earful from JDeveloper loyalists, everyone’s got to believe in something I guess, but is it a requirement at Oracle that their software be incredibly difficult to use. I think Oracle’s a great company and their definitely undercutting everybody else on ERP prices, but wouldn’t you have a lot more successful implementations if your software was just a little bit more usable? Of course, if it were too usable who would you be able to sell all those professional services to?

12 Responses to “The functional mess that is Oracle JDeveloper”

  1. Welcome to the world of JDeveloper.
    Let me see if I can help a little.
    1. The same project can be added to multiple applications, and you can have one project depend on another one (project properties->dependencies).

    2. There is a “goto file” extension for JDeveloper that you can download and install. In 11 it is part of the tool and also support camel casing.
    More info here:
    http://blogs.oracle.com/shay/2007/05/31#a382

    3. Try to switch to View->System navigator this can give you a package/directory view of your source and you can also play with the directory levels that are being displayed.

    4. A simple way to go back to the way it all started is described here:
    http://blogs.oracle.com/shay/2006/11/10#a266

    5. We would love to hear more specifics about what exactly are you finding lacking in the CVS/SVN support so we can improve these.

    For comments and further questions try the JDeveloper discussion forum on OTN.
    http://forums.oracle.com/forums/forum.jspa?forumID=83

    Shay

  2. Shay,

    It’s great to hear from you. Thanks for addressing some of my concerns, I should have griped 6 months ago when I started this mess.

    What you describe in number 1 is what we did, to me it just seems a pain to manage especially with a large number of applications and modules, we’ve got drives and projects mapped to the wazzoo and that makes it hard to configure a new environment. It also seems to make the application less portable, which violates what Java is all about.

    I’ll be downloading that “goto file” plug-in straight away, I know it will improve my experience 10-fold. I’ll have to check on the specifics of the version control issues, I believe it had a lot to do with the visual cues when synchronizing and determining what was incoming and outgoing and resolving conflicts that was just confusing, it has been a while since any of us have looked.

    As much as I can gripe about Oracle’s software I do see a visible effort to fix it and make it better, which a commend. Thanks again.

  3. The GOTO FILE plugin, while a step in the right direction, doesn’t come near the power and usefulness of the eclipse ctrl+shift+r. For example, I can’t just go *Panel* to see what Panels have been written. Plus it doesn’t span projects.

    The effort to accomodate users is certainly appreciated.

  4. My hopes and dreams crushed, I really had high hopes for this plugin, as the majority of a developers interaction with the IDE is spent finding and editing files, it’s been disappointment abound with this IDE.

    It’s almost like the Firefox and IE7 battle, damn if Microsoft doesn’t try, but they’ll never have the usability extended by Firefox’s add-on framework and even if/when they do catch up the next version will blow them out of the water and put them 3 years behind again.

    I hate to say it but Oracle probably should have taken other Application Server providers lead, like IBM and BEA, and based their IDE tooling on Eclipse, something established and something that works. There’s no shame in not reinventing the wheel and focusing on your core product.

  5. I feel your pain.
    I’ve got to use the same POS, by corporate mandate. And listen to some folks on how great their IDE is, and how they have a forum to handle problems.
    But they apparently dont seem to eat their own dogfood. There are places in the same company that use RAD over JDeveloper. That speaks a lot for their IDE.

  6. Do you have to use BC4J? Count your lucky stars if you don’t. Man, it’s a big mess. Even the core developers of BC4J agreed that it was a completely unusable mess at one point in time. I don’t know how many projects, companies and careers it killed. Now comes Fusion, the next Oracle tech stack. Guess what is used in Fusion, not TopLink, but ADF, the new incarnation of BC4J.

  7. No BC4J on my end, we are using ADF, but luckily for me just OC4J and I think that’s a piece of junk too. Somebody please tell me why, on my Windows development machine, I have to run my server on port 1024 and have no reasonable option of changing it? I don’t want to hear the excuse, on linux you have to be at 1024 unless it’s the root user, I want to test on port 80 and 443 so I can switch between ssl/non ssl and know confidently my site is working as it should. Another gripe.

    We’ve bought into the Fusion stack, Oracle’s hodge podge of purchased companies that they haven’t completely figured out how all their products are going to talk to each other yet, a pipe dream. I’m curious if any companies have successfully implemented this stack. I’m still pushing to keep WebSphere around and ditch OAS, I could give a crap about the rest of the stack. The first thing the Oracle consultants said when we showed them our current performance statistics was, oh we can’t do that :)

  8. Regarding part of gripe #4, double click on the title bar of any window - such as a code editor - to maximize it within the IDE. Double-click again to return it to its previous size. A handy way to immediately hide all other windows and focus on the task at hand.

  9. The last good Oracle development tool was SQL Forms 3. I did a stint on Oracle Developer/2000 and that was absolutely awful. It amazes me how they managed to sell that to developers…

    That was ten years ago and I see things haven’t progressed much.

  10. @richard, you know when i did that my palettes suddenly gone and i could not double click again to restore my IDE setup i cannot show panes even if i select View -> …
    wtf?

    Oracle, drop Jdev and use eclipse already!

  11. If Jdeveloper is a tangible object I will fucken blend it in no time! It’s a fucken piece of junk! Do you feel my anger now?!

  12. Almost a year later from this writing..

    JDeveloper still buggy as ever. When working with BPEL project, I have to close and reopen the IDE a lot, because the type explorer won’t refresh after I change the payload type. I also got bitten by a big “unresponsive code editor” bug right in my lip..

    Some weeks ago, the management had the ‘coolest’ idea to code everything in BPEL. Yes, everything.. making BPEL the implementation of even the finest grained logic. And now, after they (and I) realized that it was the craziest thing and that full graphical programming is still as utopian as democracy in the ice age and that JDeveloper is full of bugs that might bite my nipples, we are ready to refactor everything and use.. (drumroll).. ADF BC (neo BC4J).. (crying out loud)

Leave a Reply

You can use these XHTML tags: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <em> <strong>