Sunday, May 20, 2007

Where Is Apple JDK6?

Apple usually takes its time to get Java on MacOS up to date with Sun's releases. But with JDK6 it seemed that things will be different. Apple kept on releasing "Developer Preview" versions of JDK along Sun's beta builds.

The last Java SE 6.0 Release 1 Developer Preview 6 was released on Sepember 13th 2006 and after that date Apple became quiet. What has happened?

All the unconfirmed and confirmed rumors about changes of the UI framework in the 10.5 version of MacOS X (Leopard), has given me a feeling that JDK6 got stuck because of Leopard's delay.

Each significant modification to the user interface has to be reflected in the Swing Java UI library. And since Leopard was scheduled to be released in spring 2007, I think that it was safe for Apple to modify Swing to support the latest UI and to release JDK6 along with Leopard.

That's why I think that the roadmap of JDK6 probably got disrupted by Leopard's delay. JDK6 simply can't be released because Leopard hasn't been released yet.

Does it mean that JDK/JRE6 won't run on Tiger? Unfortunately I think so. After all that's exactly what Apple did with JDK5 and MacOS X 10.3 Panther.

While writing this entry I stumbled upon an article by Matthew Schmidt from Javalobby, who has very similar feelings.

Does anyone have a better explanation?

Btw, I checked, Sept 13th 2006 wasn't a Friday, so we can't blame the delay on the date of last Developer Preview release :)

Will Apple Start Giving MacOS X Tiger Away for Free?

According to the AppleInsider, Steve Jobs made an interesting comment regarding the future of MacOS 10.4 Tiger:

During the shareholders meeting, Jobs also entertained the suggestion that Apple could mimic Microsoft's strategy of offering developing nations Windows Starter Edition -- a low cost version of Windows XP as an alternative to the much more expensive Windows Vista. "Do you think we should offer Mac OS 9?" Jobs quipped in response.

"I think Apple could sell the developing world Tiger while selling Leopard here," the attendee replied. Jobs paused for a moment and said that could be an option.

If this really happened and Tiger was released to the community for free, it would be beneficial for both Apple and the community, especially for those folks from developing nations that don't have extra money to pay for software.

Tiger for free?

I don't think that Apple should charge users for the old versions of MacOS X. That seems to me like a business model that is very close to the one, that the company they laugh at all the time (read Microsoft) is using. Besides if a customer pays for a product he/she expects to get some support for it which would be an extra burden for Apple.

How would this work?

Apple would remove all the protection that prevents Tiger from running on non-Apple x86 hardware and encouraged the community to build a driver database for hardware that is not supported by Apple.

Tiger would not be released as an open source (Apple is not that generous! :) ). When it comes to support, Apple would not provide any support for customers that don't have AppleCare and/or that run Tiger on non-Apple HW.

Why would this be good for Apple?

The more users that get exposed to MacOS, the more potential customers Apple will have. I believe that some users after seeing and being able to play with MacOS would be willing to pay for the latest, more advanced version.

All of this for almost no effort (no support, drivers developed by community).

Why would this be good for the community?

Users that can't afford to pay for SW and for whatever reason don't want to or can't run Solaris or Linux would have a third choice (besides running a crippled version of Windows, which can't be really counted as a choice).

Do I see this happening?

Uhh.. well... I'm not sure... but it is certainly something that I would welcome!

Monday, May 14, 2007

Hello I'm RubyOnRails, Hello I'm Java :-)

This is pretty good! The Java-developer half of me feels offended, but the RubyOnRails half is laughing hard :-D


Last night I read about the big news from Microsoft.
Microsoft claims that free software like Linux, which runs a big chunk of corporate America, violates 235 of its patents. It wants royalties from distributors and users.
Is Microsoft really so desperate that it turns to desperate measures like this? I started my boycott against Microsoft two years ago and I've never had a moment's regret :-).

Here at Sun we strongly believe in open source software and open standards (need proof? see OpenJDK, OpenSolaris, OpenJFX and many others). Why? Because we are convinced that this is one of the things that can make the world a better place.

If you use Microsoft products you might want to look into alternatives which are often far superior. Most of these alternative applications/services are free or even open source. And these are the applications that Microsoft is trying to destroy because they can't find a better way to compete with them.

Check these out just to name a few:
If you like any of these, don't forget to tell you friends and help us make the world a better place :)

Sunday, May 13, 2007

Java MVM (Multi-VM, Multitasking VM) resurrected?

While reading up on JavaFX (formerly F3), I stumbled upon a Chris Oliver's blog entry describing his approach to MVM. I was surprised to see that he was looking into this while working on F3.

It really makes sense, though. Java applications suffers from one major issue and that is the startup time. It takes quite a while for the almighty JVM to initialize and warm up. So to make JavaFX successful in the bloody battle with Flash this issue has to be resolved and his approach looks like a possible solution.

There used to be a project at SunLabs led by Grzegorz Czajkowski, called The Barcelona Project which was targeted for JDK7. Unfortunately this project got canned last year after Grzegorz left Sun for Google. I'm not quite sure why SunLabs froze the project. It definitely looked very promising.

One way or another I think that it's not going to take too long and (close to) instant start of Java apps will be real and Consumer JRE will be the solution.

Saturday, May 12, 2007

JavaFX Killer App - PDF Reader

This is an awesome app. It hasn't been released yet due to licensing issues with the underlying PDF rendering library IIRC. But the work is in progress to get it out.

JavaOne Day 4 - Toy Show, Comparing (G)Rails and JavaEE, DTrace in Java

JavaOne 2007 is over, it's time to put the conference badge away and start working on the ideas that I was inspired with. It's a damn long list. I should ask my manager for a week off now (if not more) to have enough time to scratch the surface of things on my TODO list. Rama? :)

Friday was the Toy Show day. If you didn't attend, check out the video online, it was quite a show with a lot of interesting and inspiring demos.

From the sessions:

I went to a session called "Comparing the Developer Experience of Java EE 5.0, Ruby on Rails, and Grails: Lessons Learned from Developing One Application". Having a year of experience developing Rails applications and a couple of years on and off with JaveEE, I was mainly interested in seeing how Grails compares to these two.

The session was somewhat disappointing, mainly because the guys running the session were coming from the JavaEE world and all they were trying to prove was that JavaEE is still the best choice nowadays. Don't take me wrong, JaveEE is certainly a cool technology and has its place in the industry, but there are often better ways to solve some problems or parts of complex problems.

The worst of all was their benchmarking strategy. Comparing Rails running on WEBrick to Grails and JaveEE applications running on Glassfish and Sun Java System Application Server is nonsense. That's like comparing PHP application with Derby backend to JavaEE app with an Oracle or Postgres cluster as the backend. I think that there is a pretty good reason why Sun doesn't bundle Java with Postgres as Java DB but uses Derby instead. WEBrick has it's place in the Rails world, but it's certainly not a production server that scales well.

Also if you create a CRUD application in Rails using the scaffold method instead of the scaffold generator, as they did, you might as well recompile your JSP pages for each request in the JavaEE application to be fair. So the benchmark was flawed for many reason.

I wish they benchmarked the Rails app deployed on a recommended production setup or even more interesting would be to see how the Rails application deployed as a WAR on Glassfish performs. This is one of the things that is on my long TODO list to do after JavaOne.

I also went to a Java DTracing session ("Cranking Up Java Application Performance with DTrace"). Adam Leventhal, one of the creators of DTrace, obviously knew what he was talking about and Jarod Jenson, a consultant specializing on DTrace was truly amazing - throughout the session he was typing like a crazy monkey and DTracing applications in real time! If they make a video of this session available online, this is definitely something you want to see :).

It wasn't big news that it was possible to DTrace Java applications. The limited support was there in JDK 5.0, but with JDK 6.0 things have improved by heaps. There is a lot of new probes in the JVM and these probes can be enabled without even restarting the application! JDK 7.0 will bring support for creating user defined probes in Java applications. This will be a major step forward.

Overall JavaOne was really good, I had a lot of fun and enjoyed it a lot. Too bad that it lasts only four days. I'm already looking forward to next year's conference and I'm definitely going to do everything in my power to come again!

Thursday, May 10, 2007

JavaOne Day 3 - Consumer JRE, Ajax Security, Ruby in Netbeans

Todays highlights:

Roumen posted a blog entry about Sun's commitment to create "Consumer JRE". This is exactly what JavaFX needs in order to blow Flash away.

In the morning I attended Ajax Security session. The session didn't bring up anything new (un)fortunately, but it was a good recap of security pitfalls and best practices for Ajax development. The main message of the session was that Ajax makes securing web applications more complicated because of exposing more API and revealing many implementation details to the cruel world. The most important counter measures are:
  1. don't trust the client
  2. validate input
  3. encode output
  4. don't send sensitive (passwords) data in raw form over http
  5. remove comments from html and java script
Tor Norbye's session on Ruby tooling was pretty interesting. I had no idea that NetBeans was using Lucene search engine to make auto-completion and ctl(cmd)+space suggestions for dynamic languages like Ruby in NetBeans possible. Pretty smart :)

Btw, I've been using Netbeans 6 M9 as my main development environment for almost two weeks now, while working on numerious Java and Rails projects. The stability of this build is fantastic. I don't recall seeing any major or even minor issues.

Incredible Java2SignLanguage Interpreter

I never gave a thought as to what would it be like to be at JavaOne and couldn't hear anything. So it really amazed me to see that some (maybe all?) of the sessions at JavaOne are being interpreted into sign language.

Live translation into sign language is nothing rare. But when you realize how complex and highly technical most of the sessions are, it is hard to believe that it's actually possible.

I shot this video during Joshua Bloch's Effective Java session. Joshua is a great speaker, but he also tends to talk about pretty geeky stuff that a non-technical person would find hard or impossible to follow.

I applaud all these interpreters for the great work they do!

The video quality is not the best, but you get the idea :) I might shoot a better one tomorrow if I feel like it.

Wednesday, May 09, 2007

JavaOne Day 2 - JavaFX Details + Enterprise Rails

Another great JavaOne day is over. Today I did a better job of avoiding boring sessions like yesterdays Web2.0 profiling lab :)

Briefly some important info:
  1. Joshua Bloch did a great job at his Effective Java session. The presented Builder pattern (among others) is something I'll definitely use next time when the need surfaces.
  2. Colgate runs an internal RubyOnRails application talking to the SAP backend via SAP4Rails. It's more than likely that more Rails+SAP applications will surface in the near future, because SAP guys love how easy it is to build a pretty GUI with Rails. And I realized that I should be happy that I didn't become a SAP code monkey :)
  3. JavaFX or JFX (formerly Form Follow Function (F3)) details:
    1. in my understanding it is a wrapper around AWT, Swing and Java2D libraries, that uses it's own language to expose easily usable, yet incredibly powerful, API for building rich GUIs
    2. the language, JavaFX Script, is statically typed and as of now is interpreted, but the work is in progress to get rid of this 2nd level of interpretation in the JVM, which will speed up JavaFX 10-20x
    3. can be deployed as a J2SE app, Java Web Start app or an applet
    4. as an applet it weighs somewhere around 700k after PK2000 compression
    5. enables the building of truly amazing GUIs with a very little effort
    6. it is easily possible to transform SVG into JFX Script - that makes it possible to create a GUI based on output from tools like Adobe Illustrator
    7. since JFX is using AWT/Swing internally, it is possible to embed existing GUI components and display them via JFX. The same is true for trying it the other way around - embedding JFX elements into exising Swing applications.
    8. it's still a work in progress and I have a feeling that very interesting things related to JavaFX will be announced in the upcoming weeks/months

Tuesday, May 08, 2007

JavaOne Day 1 - JRubyOnRails and JavaFX

I'm back home after the first day of my first JavaOne and I feel incredibly good. Seeing these thousands of geeks (just like me :)) trying to suck in as much info as they can, while talking about all these cool things that "normal" beings would not even remotely understand. Feels like a geek heaven :))

Overall the day was pretty interesting:
  1. I was happy to meet my team mate Matthew in person.
  2. The DJ that warmed up the crowd before the keynote, reminded me how much I like electronic music from which I got side tracked from for unknown reason. I should blame my friend Monicka influencing me with all that good jazz that she was loading me up with lately.
  3. The keynote was pretty good. IMO I think that Apple does a better job at orchestrating keynotes so that they feel little more exciting though (at least from what I saw online). I'm not saying that it was boring or anything like that, just stating that there is still some space for improvements. ;-)
  4. OpenJDK is out - good job!
  5. JavaFX - think Flash/Flex/Silverlight/AJAX "killer" :) - new technology announced today during the keynote, looks promising. From what I saw I think that this technology has a great potential. Based on experience I got while helping out on the project, I see that AJAX/DHTML has its limits. When creating RIA it is very easy to reach those limits and start to struggle performance-wise. I know that Flash is out there, but I think there are valid reasons why not to use Flash. If JavaFX delivers on its promise, I'd be up to checking out how JavaFX can be leveraged at Rama, are you planting ideas about how/where to use JavaFX at :)
  6. The other major thing that change the way I look at the world today was the JRuby on Rails session. I've been keeping an eye on JRuby for some time now, but I had a feeling that it was not ready yet, or at least not ready for the enterprise. How wrong I was! During the session Charlie and Thomas (a.k.a. JRuby guys) demoed deploying a simple JRoR app as a war to Glassfish app server. Amazing! I have to play with this and see how I can sneak the JRoR into (I have a secret plan already! 8-) ). Also the backend of could greatly benefit from tighter integration of the RoR admin app and Java based importers. Hey zoom23 guys, how would you like running zManager and the importers in one JVM? I think that it would be pretty interesting!
  7. I wish Java had closures already! Come on people, hurry up with these, otherwise it'll be too late.
  8. The other session and hands on labs that I attended were beyond disappointment. I was bored to tears!
Off to bed, to recharge and continue tomorrow.

Off to JavaOne 2007

Today I compiled a list of JavaOne sessions that I'd like to attend. It was quite a task to get through all the sessions available. Here is what caught my eye, if I missed something important chime in :)

 * Tue
10:50-11:50 TS-9370 JRuby on Rails: Agility for the Enterprise
3:20-4:20 TS-6045 Web Algorithms
4:40-5:40 TS-2294 Closures for the Java Programming Language
5:40-7:40 LAB-4410 Benchmarking and Profiling Web 2.0 Applications for Performance

 * Wed
9:35-11:35 LAB-7230 Project Sun SPOT, Robots, and Java Technology
1:30-2:30 TS-91440 Ruby on Rails Meets the World of Enterprise Applications
2:50-3:50 TS-9235 Stress Your Web App Before It Stresses You: Tools and Techniques for Extreme Web Testing
4:10-5:10 TS-2388 Effective Concurrency for the Java Platform

 * Thur
9:35 - 10:35 TS-6014 You Are Hacked: Ajax Security Essentials for Enterprise Java Technology Developers
10:55 - 11:55 TS-4436 Technical Overview of GlassFish v2
1:30 - 2:30 TS-3420 Form Follows Function (F3)
2:50 - 3:50 TS-1262 Killer Apps: Data Mining Demystified
4:10 - 5:10 TS-9972 RubyTooling: State of the Art

 * Fri
10:50 - 11:50 TS-9535 Comparing the Developer Experience of Java EE 5.0, Ruby on Rails, and Grails: Lessons Learned from Developing One Application
12:10 - 1:10 TS-2698 Cranking Up Java Application Performance with DTrace
1:30 - 2:30 TS-9646 Performance-Tune Your Ajax Application
2:50 - 3:50 TS-3165 Filthy-Rich Clients: Talk Dirty to Me
4:10 - 5:10 TS-9294 Exploiting JRuby: Building Domain-Specific Languages for the Java Virtual Machine