Do You Really Need That Jar File?
Many Java projects accumulate Jar files. Their numbers just grow until you are not exactly sure why or whether a Jar file is still in use. Traditionally, you answer the question of whether you still need a specific file by removing it from the class path, attempting to build your project, deploying it and seeing whether the application works or not.
Kyrill Alyoshin has released a beta version of his loosejar project. The goal is to determine what jar files are not being used by your application. It does so by analyzing what classes are loaded by which class loader. The result is a report that is presented via JMX or through the console (once the VM is shutdown).
The project is hosted on Google Code and it is released under the Apache Software License v2.0.
When A Project Goes Dormant
We use the ZK web application framework on our project at work. It was selected before I came back to Sun. ZK in itself is a pretty decent web framework that would allow JavaScript averse Java developers to write an Ajax-like dynamic web application without having to worry about the details of the browser. We've done some pretty amazing things with it.
But this is not a post about ZK.
Most of the team also uses NetBeans as our IDE. NetBeans has improved a lot over the last couple years. I even switched back to it when I was still at TransZap and used it a few times at OpenLogic for it's profiler. NetBeans 6.0 is really an amazing environment to code in Java, has great support for Ruby and has a community of plugin developers who are at work adding support for Groovy, Scala and other languages.
This post is only partially about NetBeans though.
I was pointed to the REM plugin when I came back to Sun. This plugin adds support for ZK to NetBeans. It was created as part of a school project and was posted on SourceForge. It was supporting ZK 2.3.0 and we were using ZK 2.3.0. This plugin made it much easier to learn ZK and write the pages themselves.
Then we upgraded to ZK 2.4.1. The plugin didn't though. But it was still useful, so we kept using it.
Work on NetBeans 6.0 was moving along quite nicely. I downloaded NetBeans 6.0 beta 2 to test it. I started installing my collection of plugins only to discover that REM wouldn't load. I posted a note on the forums asking about support for NetBeans 6 but didn't hear anything. So I downloaded the source code for the plugin, found the area of code that wouldn't work with NetBeans 6.0 and commented it out. It was still usable, but it wouldn't quite do for production work.
I decided to contact the project owner and offered to help. That was the beginning of my official involvement with the REM plugin. In a few weeks, I upgraded the plugin to support ZK 2.4.1 and then ported it to NetBeans 6.0. This was done just in time for Sun's IT to upgrade the default IDE to NetBeans 6.0.
This wouldn't have been possible if REM was a closed source product. We would have been either stuck on NetBeans 5.5 or we would have had to abandon the plugin. The open source nature of the project means that not only can we keep using the plugin moving forward but that we can contribute back to it and make it more valuable to people outside of Sun. This in turn helps the ZK community by adding value to it by integrating it with another IDE and helping it grow.
When A Project Goes Dormant
We use the ZK web application framework on our project at work. It was selected before I came back to Sun. ZK in itself is a pretty decent web framework that would allow JavaScript averse Java developers to write an Ajax-like dynamic web application without having to worry about the details of the browser. We've done some pretty amazing things with it.
But this is not a post about ZK.
Most of the team also uses NetBeans as our IDE. NetBeans has improved a lot over the last couple years. I even switched back to it when I was still at TransZap and used it a few times at OpenLogic for it's profiler. NetBeans 6.0 is really an amazing environment to code in Java, has great support for Ruby and has a community of plugin developers who are at work adding support for Groovy, Scala and other languages.
This post is only partially about NetBeans though.
I was pointed to the REM plugin when I came back to Sun. This plugin adds support for ZK to NetBeans. It was created as part of a school project and was posted on SourceForge. It was supporting ZK 2.3.0 and we were using ZK 2.3.0. This plugin made it much easier to learn ZK and write the pages themselves.
Then we upgraded to ZK 2.4.1. The plugin didn't though. But it was still useful, so we kept using it.
Work on NetBeans 6.0 was moving along quite nicely. I downloaded NetBeans 6.0 beta 2 to test it. I started installing my collection of plugins only to discover that REM wouldn't load. I posted a note on the forums asking about support for NetBeans 6 but didn't hear anything. So I downloaded the source code for the plugin, found the area of code that wouldn't work with NetBeans 6.0 and commented it out. It was still usable, but it wouldn't quite do for production work.
I decided to contact the project owner and offered to help. That was the beginning of my official involvement with the REM plugin. In a few weeks, I upgraded the plugin to support ZK 2.4.1 and then ported it to NetBeans 6.0. This was done just in time for Sun's IT to upgrade the default IDE to NetBeans 6.0.
This wouldn't have been possible if REM was a closed source product. We would have been either stuck on NetBeans 5.5 or we would have had to abandon the plugin. The open source nature of the project means that not only can we keep using the plugin moving forward but that we can contribute back to it and make it more valuable to people outside of Sun. This in turn helps the ZK community by adding value to it by integrating it with another IDE and helping it grow.
Vote for Java 6 on Leopard
I debated for a while whether to wait or install it. The excitement got the best of me so I loaded the DVD and started the installation.
It's only afterward that I realized that a very important piece was missing: Java 6. It wasn't there! Even the old preview didn't work anymore.
Like many others, I ranted, spammed Apple's feedback URL and bug submission web pages with comments about this very important missing component. And now, I'm adding my vote to the blogogpshere:
13949712720901ForOSX
13949712720901 is the decimal notation for 0xCAFEBABE. This is the first 4 bytes in the files that contains the Java classes. I'm joined by Henry Story, David Van Couvering and others in spreading the word.
Not having Java 6 on my Mac forces me to do things like run Solaris under VMWare on my Mac. All of this so I can participate in the project that I'm working on. It's workable, but it's certainly foreign. It's certainly a lot less elegant than I would like it to be.
Obviously, I can't certainly make a big difference by myself. All you need to do to participate is to add
13949712720901ForOSX
to your blog to show support for Java 6 on Leopard.
Talking about JSON at the Boulder JUG
I'll give a presentation about JSON at the Boulder JUG tonight. I'll introduce JSON to the audience, talk about consuming and producing JSON, discuss some of the security implications around JSON before talking about some recent developments. This is an extension of the presentation I gave to the Denver JUG a few months ago.
Technorati Tags: richweb
Enjoying The Rich Web Experience
I am now in California. It should be sunny, but I can hardly tell since I'm engrossed into the most excellent Rich Web Experience conference put together by the No Fluff, Just Stuff team.
The focus of this conference is on building rich internet based applications, whether they are written in pure HTML + CSS + JavaScript, Flex, AIR or Silverlight. There are discussions around security, performance, design sprinkled around talks about frameworks.
Access to the speakers is amazing just like any NFJS events. I had conversations with Greg Wilkins (Jetty), Dean H. Saxe (Security) and the usual suspect: Scott Davis, David Geary and Neal Ford. I even indulged in a little bit of hero worship by meeting Douglas Crockford, Yahoo's JavaScript architect. He gave talks on JavaScript and JSON in addition to giving a keynote speech.
The conference itself is a fast paced mix of keynotes, expert panels, presentations and networking. The caliber of the presenters and attendees is quite impressive. This is definitively my type of crowd. Where else would you be discussing and arguing about the meaning of HTTP response codes, the merits of Prototype versus Yahoo! UI Toolkit or Paranoids at Yahoo!? Right here at the Rich Web Experience in San Jose.
I'm Loving It!
I bought my brand new 15" 2.4GHz MacBook Pro the Wednesday following it's release. I had saved up the money, I was ready to buy. So I showed up at the Broomfield Apple store with my Sun badge in one hand and a credit card in the other and walked out with my new laptop. I transferred my settings and application from my PowerBook G4 and haven't looked back since.
It turns out to be an amazing machine. It's so fast that I no longer have time to read an RSS feed entry when compiling code. I did have performance issues when running Windows XP under Parallels, but those were quickly resolved by upgrading the memory to 4GB. The display is sharp and extremely bright. I usually end up dimming it a bit so it is easier to read and match my external display.
It's really nice to have a few hours of battery time. I usually end up with about 3 hours of battery life without having to turn too many things off. This allows me to bring the laptop to serial meetings or enjoy a full evening of Sci-Fi channel and RSS reading without having to carry the power brick.
Looking At Grails (And Liking It)
A few months ago, I was introduced to the Grails project while attending a Boulder JUG meeting. It was just after they released they 0.1 release. It was a little rough around the edges. At the times, I thought it was just another Java based Ruby on Rails wannabe. As a result, I just ran the basic install, went through the quick start tutorial and moved on to more interesting (to me) projects.
I have since changed my mind.
We use a lot of Groovy at OpenLogic. We use it in our infrastructure. We use it to build our content packages. I tend to use it whenever I would have to write more catch clauses than they are lines of code that could possibly throw these exceptions. It’s a great dynamic language in its own right, and it integrates seamlessly with Java code.
Now, Grails happens to be written in Groovy. It does borrow concepts from Ruby on Rails such as Convention over Configurations, (dynamic) code generation and scaffolding while leveraging the power of existing libraries and framework such as Spring, Hibernate and Sitemesh. I’m just starting with it, and I’m still learning the different “grailisms” used to code the applications, but I like it so far.
I’ll keep looking at it and evaluate it for future project. In the mean time, I’m starting with a pet project. It is similar to a different project I did while I was still at Sun. As a result, I already have a pretty good idea how to proceed with the project. That will help a lot.
Reflections on JavaOne
I spent the week at JavaOne, mostly manning the OpenLogic booth. We had a really good turn out, got a lot of potential leads and handed out a lot of t-shirts. I also had the opportunity to walk the pavilion a few times, get some swag and even attended a session.
The first impression I got of the conference was the first general session. It happened to be the first time that Jonathan took the stage as CEO of Sun Microsystems. I must admit that I know understand why I usually watched them as a webcast. I felt a little under whelmed by the whole presentation. It was mostly marketing fluff. I guess I wasn't the only one that felt that way since you could see groups of attendees streaming out the door.
I made my way to the pavilion right after the session ended. I was on the first booth duty shift, and I got a quick orientation on the booth itself, on how to use the lead scanner and on the different pieces of marketing that we had. The pavilion opened and the attendees started to stream in. The day turned into a blur of giving the quick marketing spiel, scanning badges, asking qualifying questions and handing over t-shirts. I must say that we had amazing t-shirts.
I did attend the "Future of Spring" presentation given by Rod Johnson. Rod was good, his presentation had a lot of good information about Spring 2.0. It is amazing how many people attended this session. It was given in one of the biggest session rooms available. So it was me and 800 or so of my closest Java programmer friends. Quite a shock after getting used to the No Fluff, Just Stuff tour where a popular session my have 50 people in it.
We co-sponsored the Geronimo Live! party with Virtuas. LogicBlaze and a few other companies. It was a great party, was very well attended and had a really nice swag bag. We had a t-shirt in the swag bag, and it got a lot of great comments.
I must say that the best part of the trip itself was the food. After a long day of standing on hard concrete, playing marketoids and handing t-shirt, we certainly went out and treated ourselves to the excellent dining experiences available around the hotel. Two meals that stand out happened to be on Thursday. I had lunch in a tea house located right above the Moscone center. This was an oasis of peace in the middle of a very busy and crowded area. It also had wonderful food. I had the moorish tea service. It was a really nice break in the middle of the day.
The next one was a sushi dinner at Sanraku. The food was excellent, and I had a great time hanging with the developers that came to help with the conference. We had plenty of sashimi, nigiri, maki rolls and (of course) sake. I tried unfiltered sake for the first time. It was certainly different from what I am used, but it was good and it is certainly something worth trying again in the future.
Overall, it was a good trip. There was a lot of hard work and a lot of good fun. I am glad that I am on the way home though. It's going to be a slow weekend for me :)
Talking at BoulderJUG
I will be giving a presentation at the Boulder JUG on Thursday April 13. I will be giving an extended version of the presentation I gave on SVK as part of my interview with OpenLogic.
SVK is a decentralized source code version management system that is heavily influenced and built around Subversion. It allows you to mirror a remote subversion repository, have local source code version control and to submit your changes back to the remote repository either through direct commits or through patch submissions. It can also play nice with other source code version control systems such as CVS.
I'll be discussing what is SVK, why use it and then walk through a normal development cycle using SVK.
Older posts: 1 2
