Eclipse Helios Mostly Works

July 30, 2010 at 5:00 pm | Posted in Eclipse | Leave a comment

For development at work, I downloaded and started using Eclipse Helios packaged for J2EE development, wanting to see what I could stumble upon as new or different, and whether I could recommend it to the rest of my team yet without having to describe a whole lot of changes to our practices.

We use a multi-module maven project, using mvn eclipse:eclipse to generate our eclipse projects, and that continued to work just fine, with the projects seeming to be imported without issue.

I noticed that Tomcat 7 is now listed in the set of servers that can be configured, and indeed the WTP 3.2.0 New and Noteworthy lists that in it’s “Servers” section. Handy, but as we’re hosting our own application, we do not need to test against Tomcat 7 yet.

I next noticed that the view of web projects added to the server included a couple of jars. Strange. I still haven’t figured out why a small number of the many included jars get shown in that view.

The first thing I tried to investigate showed that specifying what gets deployed as part of your web application has been changed too. That’s shown in the Java EE section of WTP’s New and Noteworthy.

The applications deployed and ran ok, though a number of times I’ve tried starting tomcat only to have it complain that one of the web applications can’t find hibernate classes, and looking in the deployed directory, the jar is indeed missing.

The next thing I noticed is that a whole lot of classes now show warnings. Apparently I should now change from using @SuppressWarnings(“unchecked”) to the new and more accurate @SuppressWarnings(“rawtypes”) or according to the JDT New and Noteworthy, set the suppressRawWhenUnchecked=true system property when starting eclipse.

Another JDT change highlighted that our method of starting up one of our application included an unused object allocation. That actually highlighted that we were starting threads from within a constructor… something that is rife with difficulties, and to be discouraged.

While investigating what various people on StackOverflow recommend for eclipse.ini options I discovered the details of Oracle’s changing the executable and libraries’ organisation meta-data, and how eclipse has been using those to identify Sun’s JVM and apply Sun’s -XX:MaxPermSize setting. Oracle have changed the organisation back again for build 7 of Java 6 update 21.

I have not yet started using Helios for personal projects, since for the last little while I’ve been trying my hand at creating an Android application, implementing a nice looking Tree Mapping View showing space used by a various tables and indexes of a PostgreSQL database. The page detailing how to set up the eclipse plugins for Android development still says: “There are known issues with the ADT plugin running with Eclipse 3.6. Please stay on 3.5 until further notice.”

So far this sounds like a lack of any compelling reasons to upgrade.

However…

Using the market to install the SVN plugins we use was a much nicer experience than in previous versions, and being able to find out about other plugins from within eclipse is great.

I’m also going to start using package name abbreviations, so that all our packages of the format:

nz.co.mycompany.myproduct.subcomponentA.internalpackage1

can be nicely and succinctly shown as

{A}.internalpackage1

Something I usually do with a new eclipse installation is tune the startup parameters, editing the eclipse.ini file to show me the workspace location. This is because I often work with multiple workspaces, one showing the current production code for investigating symptoms and behaviour of the production system, and one showing later code with a number of development changes. Eclipse 3.6 has a new preferences option that lets you specify a workspace name to show in the title, which works much better as you do not need to restart eclipse for it to take affect, you can use a short code for your workspace, and it appears first in the title, before the perspective and application name.

Lastly I’m looking forward to experimenting with all the new options for controlling the formatter. I believe I can finally now get it set up to alter the code formatting to my liking more consistently.

Towards Maintainability

June 19, 2009 at 12:58 am | Posted in Eclipse, Java | Leave a comment
Tags: , ,

My friend Bevan has linked to the tools he referenced in his “Towards Maintainability” talk at the Wellington .NET users group recently.

I thought I’d add the equivalents from the perspective of an Eclipse-using Java developer…

Definr.com
Definr.com isn’t specific to a single programming language.
I simply type things into Google Chrome’s Omnibar.
FxCop & Gendarme
FindBugs
PMD
Visual Studio Class Diagrams
Perhaps AgileJ though I do not use it.
Snippets
Snippets in Eclipse
Creating extensions to snippets
StyleCop
Checkstyle
NAnt
Ant
Maven 2
NUnit
junit
TestDriven.Net
junit is integrated into all IDEs
Sandcastle
Perhaps Doxia?
TeamCity
TeamCity supports java
CruiseControl
Continuum
Hudson
Gump
ReSharper
Mylyn is probably the closest productivity adding, IDE-changing example.

Eclipse Galileo Improvements to Java Developer Tools

June 19, 2009 at 12:23 am | Posted in Eclipse, Java | 2 Comments
Tags: , , ,

Here are some improvements to JDT Project in Galileo that I personally find useful:

  1. Support for {@inheritDoc} in the javadoc popups.
    • This is encourages its use, which in turn encourages documenting why a method has been overridden, or what’s so special about this particular implementation, without having to repeat the purpose of the method itself.
  2. Warnings when a method overrides a synchronized method, but isn’t synchronized itself.
    • It’s hard enough as it is to ensure you get the intended multi-threaded behaviour. This change can help prevent an error that while not very common, can be very hard to spot.
  3. When auto-reformatting an entire class, I can keep the line breaks that I’ve added.
    • This caters for where the formatting rules are too general, and are not aware that I’d find some things much clearer if split into multiple lines in very specific places.
  4. Constructor completion has been made more useful, by offering more appropriate suggestions.
    • I also often save myself some typing by writing the right hand side of the assignment, then using a quick assist to assign the result to a new variable.
  5. By holding down Ctrl, and hovering on a method, I can chose whether to jump to the declaration, or the implementation.
    • I still find this method of navigation difficult though, preferring to keep my hands on the keyboard, navigating to the method call, pressing Ctrl-T, and choosing which implementing or declaring class I wish to view. (That’s not a new feature.)
    • What I’d like is a companion for F3’s mapping of “Go To Declaration” that with a single key press I can “Go To Implementation”. However I can’t find that command in the key binding preferences page.

Eclipse Ganymede Features

June 8, 2008 at 12:55 am | Posted in Eclipse, Java | 3 Comments
Tags: , ,

The Eclipse Ganymede release is only a few weeks away. As a long time eclipse user, inquisitive, early adopter, I’ve been trying the milestone and release candidates of the java developer tools components. (Ganymede is a coordinated release of an enormous number of eclipse projects. Several packages are available here.)

The list of new features is no longer as easy to find, since it was linked to from the download page for the milestone releases, and since the releases are now release candidates, there are no new features.

These will no doubt be combined into a single what’s new page for the final release, but until then, the lists for each milestone release are well worth a read: M1 M2 M3 M4 M5 M6 M7

Update: As expected, the release of 3.4 is accompanied by a new New and Noteworthy page. What’s also worth reviewing is the feature comparison page for the various Ganymede packages.

My personal favourite dozen new features:

  1. System Proxy Settings – One less place to change those settings when I plug the laptop in somewhere new.
  2. Default console and file encoding – I develop on Windows for Linux.
  3. Shearing – I love the pun.
  4. The improved error log view, and the Plug-in registry view enhancements – these will help when trying out misbehaving plug-ins.
  5. Line support in overview ruler – much faster navigation.
  6. Runnable JAR export wizard – no more searching for and installing third party plug-ins to do this simple thing.
  7. Different highlighting for read and write occurrences of the selected or searched for element – this is fantastic.
  8. Direct interaction with text hovers – less hand movement is good. Being able to click through to other javadocs is fantastic.
  9. Breadcrumb navigation – this is a quite good compromise between ease of use and screen real estate.
  10. Support for external class folders – I haven’t used this yet, but can think of some past experiences where it would have been useful.
  11. Java compiler on multi-CPU machines – parallelisation is how we go faster these days.
  12. Quick Assist becomes even more helpful.

Eclipse’s quick assist feature saves a huge amount of work. There’s no need to go looking through menus and dialogs to find the right place to activate the thing you want to do right now, you simply hit Ctrl-1 and what you want to do is invariably in the short list that immediately pops up. The “what’s new” pages list these additional assists and fixes:

M1
–    Helps with regular expressions in find/replace
–    Helps correct spelling in CVS commits
M2
–    PDE Quickfix for Java file issues
–    Add @throws or @exception javadoc tag
–    Select a missing method error in the Problems view and Quick Fix
–    Create getter and setters for fields (encapsulate fields)
–    Extract method on expressions
–    Helps with the new SWT Templates
–    Helps with user created templates
M3
–    Code completion helps with casts
–    Complete static members of not yet imported types
M4
–    Ensure source entries found in build.properties are properly accounted for in the plug-in manifest
–    Diagnosis (and removal quick fix) of redundant superinterfaces
–    Improved key binding support
–    Convert to StringBuffer
M5
–    Improved cursor jumping
M6
–    New Javadoc tags to annotate (PDE) API with explicit restrictions
–    Quick fix provided for missing or incorrect @since tags
–    The Java problem hover now offers all available quick fixes
–    Use MessageFormat for string concatenation
–    Extract local variable (without replacing all occurrences)
–    only show templates applicable at the current location
M7
–    Remove invalid use of API Javadoc tags
–    Inserting parameter name also shows guessed arguments
–    Shows gory details of improved text search

Create a free website or blog at WordPress.com.
Entries and comments feeds.