12.22.2006

More 2007 Predictions

My significant other just told me that I just made prediction only for Java and Ruby. That with the 2007 Predictions title, I shouldn't have such a narrow field of predictions. So here are more predictions :-)

Strong weather all over the world

2006 was relatively calm weather wise. With the global warming having more and more impact on our environment, I predict that 2007 will break every record in extraordinary weather related events.


War in many parts of the world

War is going (continue) to rage in many parts of the world. Too many innocent will continue to die due to selfish leaders ambitions.

Civil liberties will continue to be challenged

Civil liberties in most developed countries will continue to be challenged. Mostly in the name of so-called security or war against terror. The fact is that all these actions against civil liberty reduce security and put more oil on the war against terror fire.

Love will still be in the air

Even if bad things happen to the world and it's population, love will still be a great driver in human beings. Even in horrible times (which I don't believe we are in) love always find it's way!


So this is it! More predictions!

Luv U Annie :-D

2007 Predictions

Everybody doing it! Not wanting to be left in the cold, I will follow the herd and make predictions for 2007.

RoR will run flawlessly on a Java Application Server

The good people from JRuby are making incredible progress since they've been hired by Sun. We will soon be able to run RoR applications with no (or very little and trivial) modifications on Glassfish or other Web Container. Will that makes RoR application more scalable? I'm not sure. But it will increase RoR momentum in Java shops. When you talk about RoR to a java shop, the first question they have is "Will it run on Tomcat|WebLogic|WhebSphere|...?"

JRuby will take the top spot for scripting the Java platform

To the demise of Groovy, JRuby will take the spotlight. The main reason is the previous prediction. Once you can run RoR on a Java application server, nobody will need Grails. Grails is the only use of Groovy that create adoption.... Unless some other killer Groovy application, tool or framework is created.

RoR adoption continue

That's a fairly conservative prediction. RoR as a lot of momentum.

Java 6 adoption will start slowly in Q3

While Java 6 is out. It's adoption will grow slowly and will mainly be driven the scripting language support. Java 5 had many compelling reason to get adopted by many shops, but many many many application are still running on Java 1.4. Beside scripting support, there is nothing compelling enough in Java 6 to make it's adoption within the enterprise faster that Java 5.

Something will happen in Java build tool space

A lot of people are tired of Ant . Maven is cool, but lacks flexibility. Scripting language is getting more attention... We have Gant, Raven, JRake and many other existing or yet to be created build tool that use scripting language. By the end of the year, one of them will start getting a lot of traction. My best guess for now is Raven.

Java Specification Requests will become less and less relevant

The JCP is not working very well. It's too lengthy. Design by comity does not work well. Many JSR do not stand the sand of time. Today JSR mostly reflect some existing API with less feature (JPA vs Hibernate for example). They do not offer innovation, they just tend to seal mature innovative technology in the platform. New language features takes too long to traverse the JCP and with the open sourcing of Java, it will become easier for one group to add new feature to the language and to make a Java distribution of it's own. And with JSR like JSR-277 that create more turmoil than solve any problem, more and more people loose interest and faith in the process. Sun is not even interested in really supporting existing JSRs. We have a JSR for Groovy, but Sun hire the JRuby developers without giving any resource to Groovy. That's it! I made my prediction for 2007. This is probably my last post of the year, I will try to post a bit more often next year! In the mean time, have a Great Christmas and a really Happy New Year!

11.28.2006

DB2 JDBC Driver hate my Date!

It's been a long time since I worked on a project that uses DB2 for the database. I always preferred DB2 to Oracle because it consume less resources (and it's much easier to install) on a developer machine.

But today I hit a strange issue...

I need to create a query that has a condition on a DATE column in some database. So my Java method that needs to do the query, I receive a java.util.Date argument. This method uses Spring-Framework Hibernate templates to do the query. Basically my query looks like this :

getHibernateTemplate().find("from Stuff s where s.effectiveDate <= ?", today)

I run a unit test that uses HSQLDB and every thing is fine.

But when I ran the same query in the application running on top of DB2, I got a nice SQLException from the DB2 JDBC Driver. The cause of the exception is :

com.ibm.db2.jcc.a.SqlException: DB2 SQL error: SQLCODE: -301, SQLSTATE: 07006, SQLERRMC: 3

The specified SQLSTATE says that this has something to do with data conversion. Huh! I have a DATE column and I pass a Date object! That should be fine (actually it is fine with MySQL, Oracle, HSQLDB and probably many other).

After a googling a bit, I found out that DB2 (the JDBC Driver) expect to receive either a java.sql.Date or a java.sql.Timestamp (depending on the type of the column). So in my case, I had to pass a java.sql.Date.

The fix is simple, I just have to create a java.sql.Date when doing the request :

getHibernateTemplate().find("from Stuff s where s.effectiveDate <= ?", new java.sql.Date(today.getTime()))

In my opinion, this is insane! It is the JDBC driver job to convert the passed data-type to something the database can handle.


10.25.2006

added: Emmanuel's Development References search engine

I've just created a new search engine using Google Coop. You can start using it on by entering search terms on the search box on the right.

You may also add it to your browser's (Firefox 2.0 or IE 7) search engines.

This search engine is customized to search Java, Ruby, Rails, Hibernate and Spring Framework API and reference documentation. More API and reference documentation for things that are in my area of interest will be added in the future.

10.19.2006

JSR-277: At last... a module system for Java!

The early draft for JSR-277 has been made available. This is good news! We will have a module system for Java. Its a bit late in the game... Ruby has a module system (GEM), Perl has CPAN, Linux has many... Why did it take so long to have one for Java? Maybe it did not itch that many people. But then why would the Maven team choose to create a repository for dependencies management, it must have itch!

I did a quick read of the specification... And here are my first reaction :
  1. Great! A module system for Java... At last, Java application will be easier to install and we will have a dependable versioning system,
  2. Why do I need to specify in the module definition all the classes that are present in the module? Maybe I did not understand the value of the "members" definition, but I guess that everything inside a module should be a module member. I see no reason to duplicate that information,
  3. I could say the same thin about the "class-exports". Why does the module system need this? It could use class visibility modifiers to do the same thing. I can see a bit of value if it was there to suggest the main entry points and/or API of the module. It should be optional,
  4. There is no use cases on how to install and manage existing module using tools. The specification says that it does not specify any tools. I believe that local repository management tools are a must and should be provided and made standard. At least a command-line tool should be specified. Just like we have a standard specification for using the "java" command even if it has implementation specific options.
Overall, I think this is great news. It does come a bit late and will not be available unto Java 7. But this will still be a great improvement over the current situation.

AdSense Links