Wednesday, April 20, 2011

links for 2011-04-20: Who should(n't) by an iPad 2; Oracle gives up on OpenOffice

Wednesday, April 13, 2011

Is GlassFish v3 slower and a bigger footprint than v2.1?

When I was at Sun, we often touted the work we did with GlassFish v3 to improve startup times.  A lot of this was based on v3 being more  modular with an OSGi kernel and "HK2".  Now that I'm on the other side, at a software vendor (NextGate) that supports GlassFish as an app-server for our product, I get to see if it is really true in the real world!

To try it out, I did a few quick tests.  For the record, what I tested was GlassFish v2.1.1, v3.1 Full, v3.1 Web Profile, and I included Tomcat 7 for one test just to compare.  I also did this all on OS X on a fairly new MacBook Pro.

First, I deployed a fairly small and simple Web-app and then stopped and restarted each app-server several times.  My observations on startup times and footprint after start were:

ContainerStartup TimeFootprint
GlassFish v2.1.116 sec178 MB
GlassFish v3.16.5 sec153 MB
GlassFish v3.1 Web Profile5 sec123 MB
Tomcat 71 sec74 MB

This shows that v3 has clearly made improvements over v2 in both startup time and footprint This is as expected.

What surprised me a bit was that Web Profile had further improvements over the full profile, this because I thought only what was required would be started with the full profile and so it should basically match Web Profile in this case and it didn't. It was also significantly heavier weight. Does this make sense?

Also, Tomcat is clearly the speed demon and lightest weight, but this isn't really an apples to apples comparison as Tomcat doesn't offer as much as any of the other options. It still sets the standard for fast startup and small footprint though.

Next, I deployed another EAR and WAR file that make up our application.  Here is what I observed:

ContainerStartup TimeFootprint
GlassFish v2.1.120 sec207 MB
GlassFish v3.124 sec400 MB

Now this was more surprising.  Not only did v3 take longer to startup, the footprint was nearly twice that of v2!  Effectively, v2 added 4 seconds to startup a second WAR and an EAR, but v3 added nearly 18 seconds to do the same.  And why v3 is using so much more memory, I'm not sure.

Now, perhaps my test is too simple or I'm not looking at the exact right metrics to really measure startup time.  But what I'm using is the Real Memory reported by Activity Monitor and both the time it takes for "asadmin start-domain" to return the the start time reported in the server.log file.

As additional background, I'm deploying the same WAR and EAR files to both v2 and v3, and since they run in v2 they are not specific to EE 6 and the only EJBs are SSBs.

So GlassFish experts, help me out.  Is what I'm seeing real?  Is v3 really slower and larger than v2 for this type of use case?

Monday, March 14, 2011

links for 2011-03-13: iPhone 5 wishlist; Do you think like an Engineer?; Gmail outage

Friday, January 28, 2011

links for 2011-01-28: AT&T unlimited data plan for iPhone back; LibreOffice release; iPhone and Google Voice; Startup business models

Wednesday, January 26, 2011

links for 2011-01-26: AWS Simple Email Service; Marc Fleury on Oracle and Open Source; No screenshots on Windows Phone 7

Tuesday, January 25, 2011

Fun with QR Codes - Encoding URLs and contact information in images

I've been playing with QR Codes recently.  What is a QR code you ask?  It is one of those square bar-code looking images that you may have started to see lately, and are used to encode text which can be URLs, vCards (contact info), phone numbers, or other data.  By encoding this information in the QR Code, the data can be easily decoded by say a camera phone, and the information acted upon.  Common uses are sharing URLs, avoiding having to type in a long sequence of characters on a small keyboard, or sharing electronic business cards (vCards).

Here is an example that encodes the URL to the Wikipedia page on QR Codes.

Use a QR Code reader on your mobile phone and it should launch your browser on that site.  Most readers I've come across have this built-in behavior for URLs, but what about other forms of text encoded in the image?

I've done a fair amount of experimentation with several readers on the iPhone and have discovered some that simply show the text for non-URLs, while others have nicer behavior, especially with vCards.  For example, the following QR Code has a name, work phone, e-mail, company, and title.

On an iPhone, scanning this with QRReader just displays the vCard text.  i-nigma 4 recognizes it as a vCard, parses it, and lets me add it to my contacts, but ignores the company (ORG) and title (TITLE) fields as well as the work attribute on the phone number.  ScanLife does the best, recognizing the vCard and all the fields.

So, your success with using a QR Code as your business card will depend on the reader your audience is using.  Feel free to comment on how your reader works.

As you can see, when more information is added the QR code larger/denser which is natural and to be expected.  The specification calls for a maximum number of characters of 4,296 but that would have an image that was 177x177 pixels and the dense one above is 1/9 as large.  So when using it as a business card, particularly if you are printing it on the back of your business card, at some point it is too dense to print on such a small card and have readers still be able to process it, so you are somewhat limited in what you can include.  You'll notice that I didn't include an address or secondary phone numbers in either case above and those would add significant characters.

The other thing I learned in trying things out is that while there are numerous services on the Web that will create the image from text you enter, they don't all properly format the vCard with the proper syntax and punctuation when you fill in their vCard form.  But part of my project was to find a way to encode without internet access so I had to write my own anyway and did so using the Google's zxing project.  That project seems focused on readers, but has encoding classes in it too.

What is your experience with QR Codes?  What readers do you use and which work well?

Monday, January 24, 2011

links for 2011-01-24: Forrester on the Future of Java; Honda 1-ups Segway; Linux distros switching from OpenOffice to LibreOffice

Monday, January 17, 2011