|
The Future of Java
BB: Let's talk about the directions that Sun has taken, or may someday take, with the Java platform? What are your opinions?
Neal: I think they should "calm down" on the Java platform. They're making it too big, too fast. They're adding JavaScript in the next version of Java. Adding JavaScript is an awful idea. There should be more effort put into splitting things out of the standard Java stack and simplifying it some because you can't keep making it bigger.
I actually like generics. A lot of people don't like generics because they make the syntax more obtuse. But generics make using Java a little easier. I also like enumerations. I'm pretty happy with the language stack of Java right now. I don't think a whole lot more needs to be added to the language or the standard stack of things that comes along with Java.
Stuart: I was not initially a big fan of Java 1.5 (as it was then known). But several things in Java 5.0 have grown on me. The concurrency libraries are a great example of how the academic community develops great libraries that eventually lead to the Java community process and improvements to the language.
As far as Sun's strategy goes, the business community doesn't seem to understand how Sun plans to make money and have longevity with Java and I don't begin to understand it either. I'm worried on that front. I think that Sun could learn something from Microsoft about out-of-box experience. It's wonderful that, with Java, you have dozens of choices to mix and match for building the simplest Web application. But it's also terrifying to have dozens of choices to decide how to mix and match. In this area Microsoft has historically done very good work. You sit down with Visual Basic or some other GUI, and you build simple applications very quickly. Maybe Microsoft stumbles with certain harder problems. But Microsoft gets people started off in a good way.
I think Ruby on Rails is more important for the out-of-box experience than it is for the dynamic language experience. The dynamic language experience can come along in some other languages. But the out-of-box experience comes along best in Ruby on Rails.
Here's another very important thing about Ruby on Rails: Ruby on Rails is designed from the beginning to make you want to bake in automated tests. With so many Java frameworks you have to think hard to figure out how to do automated tests. But on day one with Ruby on Rails, you have test fixtures and test versions of your database generated for you. Ruby on Rails is one of the few frameworks that assumes you'll be doing testing when you write a Hello World program.
One of the things that delights me is seeing that testing is in Ruby on Rails from the first minute. Of course you want to build your application and test it, but with Ruby on Rails we all build our applications and test them the same way. So I know when I sit down on somebody else's Ruby on Rails project, it's not just that the language, the framework, the templates, and all those things are going to be the same. The discipline for writing the automated tests at different levels is going to look the same across projects, so I can jump in and immediately be productive. I feel like when I sit down to do a Java application today, or join some team that is working on one, I'll immediately have to figure out how their automotive testing is doneor worse yet I'll have to design the automated testing because they haven't done it yet.
Neal: We are huge advocates of testing. We test everything. The project I am working on now is a very large J2EE distributed application. The last time I looked at the CruiseControl results, the project had over 4,500 tests that run every time you check code into the repository. So we have a strong, strong testing culture and in Ruby, testing is first and foremost. The only Web framework that has anywhere near that level of testing is Tapestry. Howard Lewis Ship, who writes Tapestry, does test-first development, and he includes all the unit tests for Tapestry along with it. That gives me great confidence in Tapestry as opposed to Struts or JSF. I can run all these unit tests and see that it works the way he intends it to work. Testing is really important.
Stuart: Having a common way of doing testing is really important. The exact API and method names have been copied from JUnit into so many other languages. In PyUnit, the method names are the same, with setup, teardown, and so on. At the unit testing level, we now have penetration across most languages that people use. We need to have the same uniformity at higher levelslevels like functional testing, integration testing, and fitness testing. Then we can leverage our experience as we move from one application to another. The Java world doesn't yet have a response to meet this need. But Ruby on Rails has a partial response with the stuff they are baking in from the very beginning.
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|