JMeter – The developer’s 2nd best friend


The JMeter group just released v1.9.1 of their product and this is a huge improvement over the last 1.8.x release. For the uninitiated, JMeter is a 100% pure Java desktop application written in Swing designed to test your application. I think of it as a poor-man’s regression and load testing tool. You can use JMeter to test web applications written in Java using JSP/Servlets as well as other applications such as Perl scripts, Java Objects, Data Bases and Queries, FTP Servers, LDAP server and more.

You use JMeter by creating a test plan which describes a series of steps JMeter will execute when run. A complete test plan will consist of one or more Thread Groups, logic controllers, sample generating controllers, listeners, timers, assertions, and configuration elements.

JMeter’s full multithreading framework allows concurrent sampling by many threads and simultaneous sampling of different functions by separate thread groups.

I’ll be honest and tell you that I prefer JMeter over a lot of the commercial testing tool, from my developer perspective. I love JMeter as you can create a test plan by hand or use the proxy option to record a test by just navigating through your application. Once the test plan is created or recorded, you can test your application from front to back. I love and use JUnit, and JMeter does not replace JUnit. In fact, JMeter and JUnit complement each other very well. I’ve tried to make everyone in my team use JMeter as the developer’s regression and load test tool. JMeter allows you to either POST or GET to an http source and then apply assertion to the response based on content or time. If it takes too long (and you define the time), the test fails. If the response does not contain a certain keyword, the test fails. That’s the regression part of JMeter – Once the tests are created you can apply load to your application by creating many threads and/or looping forever.

JMeter supports cookies, http POST/GET’s, SSL, URL rewriting and email among many other features. JMeter also runs in a server-mode where you can run many instances of JMeter on remote servers and use a single machine as the JMeter GUI client. This allows for true performance measurement without network bottlenecks of having all the traffic going through the same network interface.

JMeter also offers graphical analysis of performance that plots the response times on a graph. The output of the test results can be saved out as CSV or XML file that can be parsed later for analysis, if needed.

Ok – If you’re still reading this, I hope I’ve convinced you that you need JMeter and must use it. Kudos to the JMeter team on putting out another great release. If you want to download JMeter, point your browser to

http://jakarta.apache.org/builds/jakarta-jmeter/release/v1.9/

Advertisement

Microsoft Architect Touts SOAs –

Found this thread on TSS that referred to an eWeek article where Don Box, formerly of Develop Mentor and current Architect for XML Messaging @ Microsoft talks about SOA. To paraphrase the article, Don Box says that the world of services and service-oriented architectures will eclipse object-oriented programming and OO will become irrelevant.

ok. What’s the point of this article? Isn’t talking about interfaces vs. implementation like comparing apples to oranges? The idea of services and decoupling systems to reduce cohesion makes sense and people are doing that. However, SOA and OO aren’t mutually exclusive.

In my world of SOA, services have published interfaces that are de-coupled from the applications that use them and deployed to allow maximum reuse, regardless of the programming language, application server, etc. used. Nothing in that precludes me from using objects in building the coarse-grained business process that I am exposing as a service.

To play devil’s advocate, I could argue that SOA means we don’t care about how we build the guts of the service as long as the piece of functionality is exposed as a service. But what about objects, encapsulation, inheritance, and polymorphism? Isn’t the goal of OOP to simplify our lives and make software maintenance easier?

I’ve actually had the pleasure of meeting Don Box and he is really a brilliant guy. I’m wondering if he really believes this or did eWeek made up the whole thing. Who knows? It was interesting to see that the last line of the article was ‘Box said he based his presentation on a new book he has in the works’. Hmmm.. Maybe Don’s trying to get some buzz started about his new book 🙂

Blogs go mainsteam –

It has been a strange ride for blogs and bloggers. First Google, then the NY Times and now AOL. In case you have not heard, AOL launched a new feature called AOL Journals in an effort to stop the bleeding. AOL has been losing many customers to broadband and other cheaper ISP’s.

Although I didn’t start blogging till a few months ago, I first discovered blogs @ the 2000 JavaOne. The Swing team was demoing the latest Swing release and the concept they were calling WebAwareWare with Matt Hamer from Pyra Labs. The goal of the presentation was to show off Swing’s ability to embed HTML contents and they demo’d a fat-client version of the Blogger UI.

Google buys Pyra Labs, the makers of Blogger and Pete just reminded me that Blogger is now 4 years old. Pete has been blogging for over 6 years, before blogging was blogging. He’s a really bright guy that’s been ahead of the curve on this and many other things.

The kicker for me for Maureen Dowd and her little rant about blogs and all these politicians jumping on the blog bandwagon. I guess Blogs have reached the level of cultural acceptance that even the politicos want to show off how cool they are by blogging. The beginning of the end 🙂

JavaServer Faces (JSF) – Fact or Fiction

JavaServer Faces (JSF) is currently being heralded as the next big thing in arena of web development. As you probably know, JSF is a framework for building user interfaces for web applications. JavaServer Faces technology includes a set of standard widgets and API’s for managing their state, handling events and input validation along with a JSP tag library for expressing a JSF interface within a JSP page.

In my quest to learn more about JSF, I am working on a tutorial to teach the concepts of JSF along with a blueprint application to show off the features and benefits of JSF. Many Struts developers are probably already looking at JSF as Craig McClanahan, the lead architect and developer for Struts is now working on JSF. Craig has also made the comment on STRUTS-DEV that he is going to advocate a long-term migration from Struts to using standards like JSF and JSTL when they are available, and de-emphasize the further development of the Struts proprietary tag libraries.

I hope to post a link to my sample code and tutorial here in the near future here. Not sure I will add any value to some of the great resources that already exist out there. Here is a small sampling of JSF resources out on the net.

GenJar – Java app deployment made easy –

I’m not sure if I was the only one that didn’t know about this, but I discovered GenJar today on the Java-writers list via. Erik Hatcher’s post.

GenJar is distributed as a jar file that holds a bunch of ant tasks. The task is designed to recursively examine each class file in your project, extracting a list of all classes referenced, eventually arriving at the complete set of classes required to execute the application. These classes are then placed into the target jar file creating easily deployable archives. In addition to the jar file, GenJar will also create generate a manifest file, listing every file contained in the Jar, along with size and creation dates.

This is such a neat little utility that is really cool — I do most of my development with WebLogic and all of the WebLogic classes are deployed in a single jar file, weblogic.jar. With v8.1 of WebLogic, the weblogic.jar file is now about 36 MB. Yikes. Hate to deploy that with every client and WebLogic’s answer in this area is a crappy little tool called verboseToZip that does not even address the issue. Nice job John & Jesse.

WS-I Announces General Availability of the Basic Profile 1.0

In the first step towards the utopian vision of interoperability, the Web services Interoperability organization (WS-I) group announced the release of the WS-I Basic Profile 1.0.

The Basic Profile 1.0 consists of implementation guidelines on how core Web services specifications should be used together to develop interoperable Web services. The specs covered by this release are SOAP 1.1, WSDL 1.1, UDDI 2.0, XML 1.0 and XML Schema. This is pretty huge for Web Services and the idea of interoperability. According to the press release, WS-I has resolved more than 200 interoperability issues associated with using the core Web services specifications together. Can’t wait to see what more comes out including security.

Apache Geronimo vs. The World

It was just a few days ago when I first read the press release from the Apache Software Foundation announcing the creation of Geronimo. I was musing about this in my blog earlier in the week.

It has really been very interesting following the debate around the whole issue of Apache jumping in the J2EE space. Some interesting articles and discussions of note are listed below

I’m not sure I can add any value to the debate that’s already in progress but I have to wonder about the motivations of Apache group. Why would you enter the J2EE space now when there are several open-source/almost free J2EE servers already out there? JBoss has already spent several years building and making J2EE accessible to everyone. In fact, they have gotten to a point where they are innovating like BEA by adding newer features to the server like AOP and JDO for transperent persistence for POJOs.

It’s going to be at least 2 years before Apache can put out a viable J2EE server that one would seriously consider using. And what J2EE spec will they target? J2EE 1.4? So what happens when J2EE 1.5 comes out and they haven’t even shipped a viable product yet? And will IBM, BEA and Oracle stand for this and let Sun certify this J2EE offering? I guess I’ll have to agree with Cameron – this looks like a bunch of ex-JBoss Core Developer Network people working with Apache to screw JBoss. I guess what goes around comes around. I’d love to see what Marc Fleury is upto these days. 🙂

Java & C#

Having been a Java developer since 1995, I really haven’t programmed in any other language since then. I did some Perl/PHP development in the early web days as CGI’s, but that was pretty simple form parsing stuff. In fact, I started teaching Java @ Marquette University in 1996 and I actually found the link to the class description on archive.org. Yikes 🙂 Takes you back to the good ol’ days of Netscape 0.9 and the <BLINK> tag.

All of my development efforts for the last 8 years have focused on Java. But I do believe as Dave Thomas suggests that you should learn and use another programming language to expand your horizons and learn to think differently. Dave is big in Ruby, and I am trying to figure out if Ruby or Python are the languages that I should dabble in and this quest has me looking at C#. C# is so similar to Java and so I am guessing it will be an easier language to delve into.

Addison Wesley just announced the availability of a new book titled ‘.NET for Java Developers: Migrating to C#‘ and I’ve just ordered it from Amazon.

I would love to hear from any Java geeks that are dabbling in C#. I don’t want to start a flame war and so please don’t send me any emails that state how Java is better, etc..

BEA unveils Linux Resource Center & Apache Geronimo –

BEA unveils the Linux Resource Center which answers questions about BEA’s strategy on Linux, pros/cons of Linux and the breadth of support of Linux for the WebLogic products. The FAQ has an interesting little tidbit about internal migration to Linux. I wish they would share more information on their internal applications and how they are migrating to Linux to lower the total cost of ownership.

Also caught this headline on TSS that seems to imply that Red Hat will ship Red Hat Enterprise version of their OS pre-integrated with BEA Weblogic. Red Hat will also join the ObjectWeb consortium to further develop JOnAS and OpenEJB appservers, in hopes of creating a compelling Java open source platform on Linux.

I wonder how this relates to the newest project from the Apache Group called Apache Geronimo. The press release says: The Apache Software Foundation has initiated a project to develop an open source, Apache-licensed implementation of the J2EE specification. In addition, the project is committed to certifying the implementation as J2EE compliant. This is an ambitious goal and will present a formidable challenge for the people involved, given the wide range of technologies covered by the specification.

The project (tentatively named “Apache Geronimo”) builds upon the many Java projects at the Apache Software Foundation. In addition, the project is bringing together leading members of the Castor, JBoss, MX4J and OpenEJB communities. We would like to extend an open invitation to everyone involved in the J2EE space, both commercial entities and talented individuals, to join the community and build a world-class J2EE implementation.

What was interesting in the press release was the whole issue of J2EE certification. The release states: Our non-profit, charity status, and our relationship with Sun Microsystems, provides the Foundation with access to the J2EE TCKs, making it possible to achieve certification. I’m sure Marc Fleury will have something to say about this. 🙂