Parsing command line options in your program has always been a boring work; you loop through String and write a whole bunch of arg.equals("-foo") and arg.equals("-bar"). There are some libraries that attempt to solve this, such as Apache Commons CLI.
I tried many of those, but I didn't quite like any of those. I felt that I can write a better one by taking advantanges of JDK 5.0 features. That eventually became args4j.
Ever want to go back in time and unmake a coding decision? Was it after a honeymoon period where you found some critical problem in something you'd bet on heavily and publicly? This happened to me recently with those seductive JDK 5 language features. Someone needed the software to work in JSDK 1.4, and I wanted to step into the way-back machine, return to August and start again. Then a fellow developer sent me a link to Retroweaver.
The GNU folks have released version 4.0 of the venerable GCC compiler with built-in support for the C, C++, Objective-C, Ada, Fortran, and Java programming languages.
Sometimes the best way to figure out how to speed up an application is to slow it way, way down. Here's an example using Swing's DebugGraphics class.
Exception breakpoints are an underused feature in Java debuggers. Here are some tips on using them effectively.
A quick utility to remap the alt and command keys (and others)
NetBeans now does Jython and Groovy!
I had the great opprotunity to attend this years EAC and I found the discussions fascinating!
Guess what the most powerful refactoring is -- Extract Method? Collapse Hierarchy? Remove Middle Man? Tom thinks that one of the simplest refactorings is the most powerful in this blog.
I've just revisited JProfiler, here's my mini-review.
Making your up-to-date builds always available helps your project by reducing the time it takes for other people to use it. I introduce Hudson, an open-source project that automates this.
I had the most difficult time getting eclipse 3.0.1 to work with the current CVSNT build CVSNT 2.0.58d. The knot has been finally unravelled and what I found, more importantly how I found out, seem to be a glimpse of how OpenSource and by extension any evoliving (and hence good quality) software matures.
I've been reading quite a handful of materials about AOP and i have come to this quite disenchanting conclusion: it encourages bad programming practices that should be avoided at any cost.
Have you ever longed for a simple way to persist Java objects; something along the lines of what Shelve/Pickle does for Python objects? Mnemos may be just what you've been looking for.
NetBeans 4.0 is out! I spent the day it was released doing a talk at Javapolis showcasing a bunch of the cool stuff in NetBeans 4.0 and coming in the next release, like support for generics and enums (code completion and all), Ant-based projects (your Ant script is your project). Mobility support, and the integrated JFluid profiler coming out soon.
NetBeans 4.0 is now official. I'm not an IDE expert but I was able to get it up and running with 5.0, hey it even looked for the JVM for me and found it.
Like custom classloaders, reflection, and bytecode instrumentation, annotations definitely have a place in a Java developer's toolkit. But will annotations be the cure for all programming problems, any more than those other technologies were?
If unit testing is so great, why aren't more senior developers using it? Tom looks into his own concerns about this engineering practice, and boils them down to a single problem.
I am quite humbled by these speakers and their ability to zero in on what is relevent and what they are trying to communicate. Although I know no perl, no python, and no klingon, I see how this is quite relevent to java. It just shows how java can rediscover its spirit and allow what I call "literate programming". My wish is that java will be in such a position that one can develop a substantial application in a single day. One should consciously aim for simplicity even in the face of complexity.
A bit of Tomcat, a bit of Aspire, and a touch of master pages: and Microsoft Access comes to life. Having developed this simple minded content management system called AKC, when I look back I am given to think how well the web complements even the simplest and readily available of relational database systems. I use this site for my web logging, classified repository of articles, online documentation tool for the open sourced Aspire product, online educational tool for young children, a research aid for new technologies.