Too much magic in Java IDEs

I am very bothered by the way a typical Java web site development works. Java website developments, through JSP (Java Server Pages) is largely supported by IDEs such as Eclipse and Netbeans. It is not in any way the easiest to utilize. And at worst these huge IDEs are too kludgy for my liking.

Take the current Java project that I am working on, it’s a website that has sign in and numerous data presentation tools. Everything .java compiles into a .class file and the remaining JSP files are deployed into this WAR file through Apache Maven into tomcat. With an IDE, everything seems seamless. You don’t even need to know how it works. Just by magic. You configure the servers and paths and it just works.

You could of course decide to dump WAR files again and again to the server paths and watch it automatically deploy after you do a manual restart of tomcat. Unfortunately that’s too unproductive, starting a tomcat server takes 2 seconds for me, and starting the application takes 10 seconds in debug mode. That’s unacceptably slow because it all adds up.

So, IDEs make you more productive by deploying the files in the server for you and compiles the .java files into .class and .jar files or something like that. Essentially you only need to restart the tomcat7 server if you updated the controller. Updates to the views do not require compilation. However — there’s always a caveat — you have the .jsp file edited on the server path rather than your workspace.

Now, under the hood of the IDE, each time you save a .jsp file, what you are essentially doing is:

  1. Saving the file in your workspace.
  2. Copying the file from your workspace to the server path.

Your workspace can be managed by revisioning tools such as SVN or git and the remnants don’t get copied over to the server space. It’s pretty well thought except that you really need a proper IDE set up to save you all the repetitive work.

So the reason why I am writing this is because I wanted to use Sublime Text and Sublime Text doesn’t have Java and tomcat integration features at all. At first this seemed surprising, after all Java is so common. Upon discovering what Eclipse and Netbeans actually does, I can’t help but to feel that there is a certain amount of over-engineering.

Forgive me if that’s not the way Java IDEs work. I’m uncovering new things every day still, so please correct my mistakes, I want to understand the platform better too.

NetBeans 6.8 released

As possibly the only NetBeans users coding in PHP in Singapore, I would like to announce in a somewhat lonely fashion that NetBeans 6.8 has been released. Despite being ridiculed for the past two years [insert laughter] for my unusual support for coding PHP with NetBeans IDE, I can never get used to something other than NetBeans so there’s probably something NetBeans did right after all.

If you’re on NetBeans 6.7, I urge you to upgrade. If you aren’t a NetBeans user, do give NetBeans a chance. It’s (probably) slower and Java-ish but the excellent code completion support more than made up for it. Oh yeah, and it’s free too.

Try NetBeans 6.8.

NetBeans IDE 6.7 Milestone 3 released

NetBeans IDE 6.7 Milestone 3 is released. I have been using this for a few days. I haven’t noticed much difference actually. I use it for PHP. I still wish for more support on CakePHP.

The NetBeans team is pleased to announce the availability of NetBeans IDE 6.7 Milestone 3 (M3).

Highlights of the release include: 

  • Project Kenai Integration
    – Create Kenai projects from within the NetBeans IDE
    – Locate and open sources for Kenai projects in the IDE
    – Full integration with Bugzilla
  • Maven
    – Multi-tabbed artifact details viewer available
    – Graphical view of transitive dependencies available
  • PHP
    – Code coverage and Selenium support
  • Platform
    – Enhancements to Output WIndow, Update Center catalog and Search performance
  • Profiler
    – Export profiling data into CSV, HTML and XML file formats
  • C/C++
    – Easy host setup for remote development
  • GlassFish Integration
    – Derby support registers Derby associated with v3 Prelude instance
  • Integration with the Hudson Continuous Integration server

Read the complete list of NetBeans IDE 6.7 Milestone 3 features and enhancements

Tip: Renaming variables names using NetBeans

One of the things I always do is to rename my variables in the current Java class. I always use Find & Replace but it can be rather destructive at times. I just realized you could hit Ctrl + R to do just that!

That saved me lots of click. It’s a simple feature but it always makes me happy when I use it.

Changing all variable names in NetBeans easily

Press Ctrl + R when your cursor is on the variable name you want to change. It changes all the variables for you. In the above screenshot, I changed the variable from ‘testing’ to ‘changeToSomethingNew’ and it recognizes that it should only change property ‘testing’ in the class scope. Pretty smart I say.

Aptana acquires Pydev to add Python support

Aptana acquires Pydev. Pydev is an Eclipse plugin.

Aptana Acquires Pydev to add Python Support to Studio

We are very excited to announce that Pydev, the popular Python and Jython IDE, is now part of the Aptana product family and that Pydev creator, Fabio Zadronzy, will head up continued efforts to advance Pydev as part of the Aptana team. Like our products for Ruby on Rails, Ajax, and PHP, Pydev offers code completion, refactoring, code analysis, debugging support, and lots lots more. Pydev’s popularity in the Python community and Eclipse ecosystem made it the clear choice for Aptana. The acquisition sets the stage for a full Python suite of products and services ranging from local development to cloud deployment. (Source: Aptana)

Aptana is pretty neat. I use it for PHP and Ruby on Rails last time. But I didn’t find the syntax highlighting as good as Eclipse PDT and syntax highlighting is one of the main reasons I switched away. Pydev is pretty good already, lately they don’t have much significant updates.