Opinion Archives

Shashank Tiwari

AddThis Social Bookmark Button

Last year JavaOne got the UN guy and was trying to eradicate poverty; this year they got Neil Young and were showing off the cool stuff. CNET blogger Dan Farber has a good write-up and the video that tells you all about Neil Young’s appearance at JavaOne. Read it from the source. I will avoid repeating it.

The good part of this year’s showoff is that Blu Ray and BD-J are cool in reality and they do what they promise. It’s not poverty eradication, its higher resolution and better interactivity and better digital archiving so I guess its more achieveable ! If you know nothing about Blu Ray or are confused on the value it adds then maybe you will benefit from seeing Sun’s Webcast on Blu Ray and browsing hdcookbook.

With the web continuously morphing into the read-write digital media network, applications becoming increasing interactive and the dividing line between business applications and entertainment getting twisted if not necessairly blurred, its not far when quite a few Java developers may use technologies like BD-J to write their applications. To some of the so called — “enterprise developers” — this may seem alien and surely we are not talking about universal applicability of this technology, but don’t be surprised if such stuff starts creeping into your realm too.

The moral of the story (for Java developers) — “Start becoming cool, if you aren’t already !”
The question (for Sun) — “Is coolness directly proportional to increase in revenue?”
A request (to Google and Steve Jobs) — “Please stop driving everybody up the wall.”
A word (to the users) — “You are loving it :)”
A word (to speakers and event organizers) — “Start making friends with rock stars”

Shashank Tiwari

AddThis Social Bookmark Button

JavaFX.com is up and running! The problem is that it doesn’t work well on most browsers. The small fonts are unreadable when viewed in FireFox or Safari. The site takes a long time to load up. The only thing notable is the transition from one window/panel to the other. Considering almost everybody else can do this as well, I am a little confused what to look at and be impressed about :)

Maybe, I should be happy there is finally something there and not just vapourware, like we saw at last JavaOne.

For a second, lets take a look at what competition’s got :

Flex Showcase
Silverlight Showcase

Now you tell me, if Sun should have waited to get this all trim and proper or am I missing something out here?

Shashank Tiwari

AddThis Social Bookmark Button

Although JavaOne 2008 officially starts tomorrow, it commenced today with CommunityOne. Carrying on the trend that started a couple of years back JavaOne is continuing to emerge as an event for things more than just Java. For statistics sake at least 10% of the 391 sessions that make up the content catalog are about Groovy, Ruby, PHP, JavaScript or Python. Also like Java the conference itself it becoming a “platform” , with many mini events within it. There is the Groovy Meetup and the Agile Event and the Adobe presentations to name a few. Not to forget the numerous gatherings sponsored by Eclipse, JBoss, Adobe, Oracle and QCon are becoming events in their own right. Then there is the excitement around social networking at the event. So hope all of you at the event have fun mingling, learning, discussing and catching-up.

Robert Cooper

AddThis Social Bookmark Button

So I am going to break rules here, I am pretty sure, six ways from Sun-day (haHA!).

I am pretty sure I have never commented on this before, because, I agree with the 16,000 of you who will tell me it is in bad taste, but the first thing that always stands out in my mind about San Francisco? There are no black people here. Not that there are none. That is silly. I, however, come from Atlanta, a city with a 65% African American population. Moreover, I live in Midtown Atlanta. given the population averages, in my “hood” you are likely black and/or gay. In spite of its reputation, a city of straight white/asian/latino people is definitely a big change for me.

Tim O

AddThis Social Bookmark Button

In Choosing an OSS License and the Ext-JS saga, Graeme Rocher (of Groovy on Grails fame) reacts to the recent ExtJS switch from LGPL to GPL. Here’s a quote:

What they have effectively done is built up a community, taking full advantage of the open source model by accepting user contributions and patches and then turned around and kicked their own community up the backside. It is projects like Ext-JS that give open source a bad name. How can a company have faith in open source if the people behind it can’t even decide how to license the thing?

In related news, the Java Service Wrapper did something similar. Jason Van Zyl commented on the JSW license switch on the Maven developer’s list:

Project[s] that start using a commercially liberal license and then switch[ licenses] long into the life of a project is wrong. If you want to do the GPL/commercial thing then say so from the start. [There is] nothing wrong with this model, but for libraries and tools using a commercially liberal license is the best way to get community adoption and then to flip the license I find a little unsavory.

Anyone interested in forking it and maintaining the version that was not GPL?

In related news, ActiveMQ is opting to move away from Java Service Wrapper.

Update (5:45 PM Central): A little madness thinks ExtJS has discovered step 2 of the elusive Slashdot business model:

The model works because step 1 allows you to build a community around the more liberal LGPL license. In particular, as the LGPL is commercial-friendly, the community will include many people building commercial applications. Once the community is suckered in and committed, the license is changed, leaving them high and dry. Well, not quite: they can continue to use new versions of the library by buying a commercial license. Hence the profit!

Update (6:17 PM Central): More from Stephans Blog

Tim O

AddThis Social Bookmark Button

O’Reilly is sending a few bloggers to JavaOne, I’m going to be attending with my reporter’s hat on. We’re interested in knowing what your questions are for this year’s conference. We want to give you, the reader, a chance to let us know what you are paying attention and what questions you have for Sun executives this year.


powered by ODEO

Tim O

AddThis Social Bookmark Button

David Herron left a comment on the last blog post, here it is:

“ultra-fast Java Plugin”? Have you taken a look at 6u10? That’s where your ultra-fast Java Plugin is, it’s already been announced, and you can download it today to try out. “Openjfx looks like a ghost town” .. Well, inside Sun JavaFX is not a ghost town and I have no idea why there isn’t more public dev-list activity. “Clearly, development of the compiler happens somewhere else” is a big 10-4. If you scrolled down to the bottom of https://openjfx.dev.java.net/ you’d see a link to https://openjfx-compiler.dev.java.net/ which is the project for the compiler. “Consumer JRE” .. that has morphed its name into 6u10.

David, compiler list is clearly very active. Lot’s of Sun activity. Let’s see why the public project has such low activity. I have taken a look at the 6u10 (I had to fire up my old Vista machine to see it), it’s clearly an improvement, but read more for the obstacles to adoption. I can’t yet go to my managers and justify writing a customer-facing application in a Java Applet, maybe explaining the reasons why this is the case might provide some useful feedback.

Why JavaFx Public Lists are a Ghost Town?

There isn’t more public dev-list activity because there are not many people using JavaFx. There are not many people using JavaFx because there are not many consumers who have upgraded to Java 6. 6u10 is in Beta, so we can’t expect consumers to install it yet. Couple that with the fact Sun doesn’t touch the JRE or JDK for Macintosh and Apple’s Java 6 is still a “Developer Preview”…. who knows if they are going to put much effort into making sure that Applets load quickly. On top of that, for some strange reason all the Applets I try to run in IE 7 end up with this strange button that reads “Press SPACEBAR or ENTER to activate and use this control.” Maybe this newer version of Java might start to hit consumers in the next few months, how quickly do you think we can expect market penetration for the Java Plugin to equal that of the Flash 9 Player? How closely have you been working with Apple to make sure that the modular JRE is a part of the Apple development effort?

People are not milling about the JavaFx lists asking questions because there seem to be some major obstacles to adoption. If I’m creating some web site that needs to stream videos and display interactive Rich UI and I don’t want to turn away everyone using a Mac, I’m certainly not going to be very excited about the 6u10 update. It follows that I’m probably not going to consider JavaFx because of that. You guys are in a tough place because it is going to take time for 6u10 to hit the market, in the meantime, the competition continues to gain market share.

How to Really Make Applets Viable

I’d start considering Java Applets if I heard both of these hypothetical announcements from Sun…

  • (hypothetical) “Here at Sun, we’re watching the trends in the computer industry and we’re noticing that Apple has started to achieve real market penetration. Apple’s growth is phenomenal, and we’re announcing today that we’re going to be committing real development dollars to supporting the JDK and the JRE on Apple platforms.” (hypothetical)
  • (hypothetical) “It is clear to us that video is driving new applications and features on the internet. We’re happy to announce that we’ve signed licensing deals which will allow us to support a wider set of media formats including flv. We’re putting a lot of development into the Java Media Framework.” (hypothetical)

If we heard something like that at this year’s JavaOne, I’d start paying more attention.

The more I think about it, the more I’m convinced that applets being viable for the web isn’t about technology AT ALL. It is about business. A business that needs to implement an RIA thinks about the user audience, thinks about platform support. Mac users are not an insignificant population any more and Apple’s market share is growing at four times the rate of the competition. There’s this other company out there that is writing a Rich UI container for both stand-alone and browser based applications. The framework has good media support and they don’t have a hang up about supporting Mac OSX. They are named Adobe. If Sun doesn’t support Apple, and Apple drags its feet, you can’t expect any reasonable business person to elect to use a technology that it going to turn away a rapidly growing segment of the market. If Sun really wants to focus more on the consumer JRE, then they need to support the two major consumer platforms: Windows and Mac.

Let’s set the bar for Consumer JRE

It is unfair to keep on harping on Sun for startup times, the Consumer JRE is faster, and it’ll probably attain a high market penetration sometime in the next year? Let’s talk about the remaining expectations. Mac support and better media support. Sure, I can use Java to playback videos, but not the ones that count - Flash Video and H.264. Instead of trying to move the industry away from H.264 and FLV, Sun should just pay the patent license. If Sun were leading the market, then I think Sun could start trying to drive the market toward free and open standards, but Sun doesn’t, and I although I detest proprietary formats as much as everybody else here, I don’t think that the Open Media Commons initiative is going to help us Java programmers write client-side applications in Java anytime soon.

If the Consumer JRE was really ready, I wouldn’t be watching Eckstein discuss the improved applet startup time in JDK6u10 via a SWF from blip.tv which is streaming me a Flash Video on a Macbook Pro. I’d be watching Bob discuss the new Consumer JRE by way of an updated version of the JMF delivered in a Java Applet. If you really had confidence in Java, you’d have used the Cortado Applet and streamed it some Ogg Theora. You’d be updating the JMF. Are you updating the JMF?

Tim O

AddThis Social Bookmark Button

In the absence of info, I’ll make some predictions. Make your own predictions in the comments.

I’m going to guess that the keynote is going to talk about Project Caroline. If it is ready, Sun is going to want to position this as the big announcement for this year’s JavaOne. I’ve already blogged about how I see the momentum with Amazon EC2 (utility) and Salesforce.com (apps) in this space. Google has arrived a bit late to the party, they already have an offering in SaaS via Google Apps, and everyone seems to assume that whatever solution they come up with in the PaaS area is going to ultimately succeed for the obvious reasons… they have the culture, people, and scale to make something like this work. Few dare to doubt Google.

…which brings us to a company which is familiar with making big announcements greeted by a symphony of silent doubt (Sun and JavaFx). The Register broke this story back in February. If those PDF slides (in the Register story, I don’t deeplink), are accurate we’re looking at utility computing a step above EC2. Instead of expecting people to interact with a series of web services, it appears that there is some sort of Java API. Caroline is going to be met with a chorus of doubt, but there are some interesting things from those slides. I think Sun has the ability to come out of the gate with some features that EC2 is just adding to the offering, and I also think that Sun has this “full-stack” of technology products that span the entire spectrum…. if anyone can pull it off, I think Sun can. But, they are late to the party and they have a lot of catching up to do.

Something Big About JavaFx?

I’m predicting that Danny Coward formally introduces some ultra-fast Java Plugin and that we’ll see a big upgrade to the JavaFx product.

We should expect to see some real meat behind JavaFx at this year’s JavaOne. If we don’t see something big about JavaFx, then it is going to make it tough for Sun to remain credible. And by “big”, I don’t mean tighter NetBeans integration. JavaFx was the big announcement last year, they established an open source project “openjfx” on java.net, but take a look at the developer and user mailing list traffic over the last year.

Month Dev List Messages User List Messages
Mar 2008 2 192
Feb 2008 1 132
Jan 2008 0 81
Dec 2008 0 82
Nov 2007 3 152
Oct 2007 0 140
Sep 2007 5 414
Aug 2007 7 100
Jul 2007 3 233
Jun 2007 13 226
May 2007 119 481

There’s some activity in the user list. It looks like there is something of a healthy community in the openjfx site, but openjfx appears to be nothing more than a Wiki and a series of sample applications. The “codebase” hasn’t changed substantially in about 5 months, and most of the dev list activity is commits to the web site. Openjfx looks like a ghost town.

Clearly, development of the compiler happens somewhere else, and because I see so many JavaFx sessions this year one has to imagine that there is a whole chunk of new code wrt JavaFx that is going to be announced at JavaOne. Sun is also going to have to do something about the speed with which Java starts in the browser to answer all the nagging questions from last year. I’m guessing that Chris Oliver is chained to a desk working on some impressive demonstration right now? He wasn’t a very frequent blogger, but it isn’t a good sign that he hasn’t blogged since December 2007. (Maybe it is a good sign, maybe it means he’s focused on JavaFx?)

Consumer JRE

Danny Coward announced an early release of the Consumer JRE last October. I’d be surprised if this hasn’t really matured by this year’s JavaOne. Danny Coward’s blog is like Chris Oliver’s blog in that there are huge gaps. I think he blogged once in Nov 2007 and then once again last month. If we see anything about JavaFx at this years JavaOne it is going to have to be closely followed by a demonstration of a Java Plugin in a browser that loads so fast you don’t even notice that you are looking at an applet.

Tim O

AddThis Social Bookmark Button

GCalDaemon

So, I’m doing a thought experiment about ways to get around a fully locked down production network. Basically, I’m trying to find a way to send SMTP mail from a network that is very locked down. (Appropriately) the network administrators have locked down the network such that I can’t create a socket to anything. This makes perfect sense, you really do want to have control over what you are sending out. What doesn’t make sense is that port 80 is wide open. I can’t SSH out of the network, but I can connect to port 80. So, I need to send email, a colleague points me at this GCALDaemon project. Now, I’m not doing this, but the requirement was interesting enough that I wanted to see what could’ve been done if I really wanted to send email. Evidently I could just use GMail over port 80. I could just drop a bunch of files in a directory and GCALDaemon will take care of the rest sending them via HTTP over GMail. I check it out, looks pretty cool. But, whoa… look at the feature list (and my emphasis):

  Open source and completely free of charge
  OS-independent standalone application (Java 1.5)
  Bidirectional sync between iCalendar and Google Calendar
  View and edit your Google Calendar offline
  Supports 'Google Apps for Your Domain'
  Supports multiple file listeners with multiple Google Accounts
  Makes Gmail contacts accessible via LDAP
  Customizable Gmail notification
  Converts RSS/ATOM feed to iCalendar format
  Reusable mail transfer agent
  Remote control your computer via Gmail
  Multi-user abilities (up to 30-40 HTTP and LDAP clients)
  Run in service mode on Windows NT/2000/XP
  Run in embedded mode in a Servlet Container
  Low memory usage (10-20 MBytes)
  Automatic and fast (3-5 sec/sync)
  Customizable logging system (Log4J / CommonsLogging)
  Ability to do TCP/IP hostname/address filtering

I think this solution has a little bit of Rube Goldberg in it, but Google is reliable, I’m willing to live with something like this. Look at the feature list though, something jumps out at you….. “Remote control your computer via Gmail” Now that’s cool, but also very scary. (some digging) It stores scripts in GMail using IMap. Your computer syncs with that folder and then executes scripts from the folder. The whole process is triggered by you sending an email with a secret subject to gmail. There’s a diagram on this page… from the site:

This management service keeps checking a Gmail inbox regularly, if it finds an email from a trusted sender and with a secret subject, it reads and executes a specified script file. Then GCALDaemon sends back a response, which contains the script’s output. Most mobile carriers and recent phones have built-in support for sending email through SMS gateways, therefore a simple cellural phone should be enough to manage a computer.

Evidently, the alien overlords have arrived and they are controlling your computer via GMail IMAP. It is written in Java source is in the download. From the download, the lib directory looks refreshingly sparse. It doesn’t appear to be using everything and the kitchen sink in terms of JAR files (like all of my projects). In other words, the lib directory doesn’t contain 150 MB of JARs everything from Spring to Hibernate. Instead it looks like it is using Commons Codec, C-Collections, C-HttpClient, C-IO, C-Lang, C-Logging, Rome API, ical4j, activation, mail, servlet API, LDAP.

Source code, from the source you can see that we have Andras Berkes to thank for this code. Project appears to be covered under an Apache License Version 2.0 (Good, good!) The source looks very straightfoward/well-documented, and if you take a look at org.gcaldaemon.core.mailterm.ScriptRunner, you can see MailTerminal is easy to understand. Next question, why isn’t this thing in Maven?

Systems like this are going to be essential as we move to a model that involves more applications integrating with hosted platforms like Google Apps. Think about the ability to control machines from GMail, now couple that with my previous entry. You see where we’re going with this?

Ridicule

BTW, a colleague is now making fun of me on Skype.

HIM: btw, they could have written this gcaldaemon stuff in 1 minute if they used salesforce (and they wouuldn’t even need access to the net or a computer).

Laugh now, the cloud has you squarely in its crosshairs. Assimilate or perish.

Tim O

AddThis Social Bookmark Button

Today, Michael Podrazik writes about a new “generational shift” to Software-as-a-Service (SaaS). Michael’s a Java architect who is considering using EC2 and S3 instead of colo machines for his next project. In his post he captures an idea that’s quickly becoming obvious in light of the recent announcements in the Software-as-a-Service (SaaS) or Platform-as-a-Service (PaaS) space. Here it is (emphasis mine)…

We’re entering into a new generational shift in computing. I’m not speaking of generations of people but rather an uplift of paradigmatic abstraction as has occurred so many times before. This is not a shift from static to dynamic languages, although that trend will surely continue. It’s not that Java developers are all going to start using Rails or everyone is going to switch from template to component-based ways of developing webapps. The new debate is not going to be between X and Y framework but between X and Y platform, and if platform used to mean Mac-Windows-Linux, the shift I’m talking about is: ’s/Mac-Windows-Linux/Google-Amazon-Salesforce/’

There has been an undeniable series of developments in the hosted-platform, managed-environment, I-don’t-even-know-what-you-call-it, SaaS? that have until now resisted full-blown, critical mass, hype-factor. I think that that all changed on Tuesday with Google’s App Engine announcement.

Like Apple, no matter what Google does it gets attention, and App Engine is undoubtedly going to get lots of it. People will love or hate the choice of Python, love or hate the persistence API, or lament the lack of filesystem access, or OS access, or inability to link to C libraries. All of that is irrelevant though, because the real story is that they will have done for this new hosted-app space what IBM did for the PC-space years ago, which is push it over the top into general acceptance. It validates the concept. read more…

I’ve been thinking about this for a while in light of Amazon and the newer, more developer-focused products coming out of Salesforce.com. We’re approaching an inflection point where the arguments over whether a project should be done in Rails vs. Java vs. PHP will be trumped by foundational questions about whether an organization should invest in infrastructure and development at all. If you are like me, and you make your living developing applications and managing infrastructure. What can you do to prepare? I don’t have the answer directly, I think we’re going to see a dramatic shift in the job description of the “computer programmer” over the next few years. There is a brewing discontinuity in most organizations that engage in software development, and I think that this discontinuity is the first sign of this generational shift. In terms of technological revolution, I think the business user is leading the technologist.

On the one hand I speak to developers and architects who downplay the feasibility of SaaS solutions. Are they really secure? Don’t you yield any sort of competitive advantage on a platform like Salesforce? Are you not locked in to a platform like Google? It seems that there are a host of convenient and self-interested observations from the people who have the most to “lose”. I’ll sit in meetings where a room full of people are discussing how many machines to buy for a new system, when it is clear that the answer is “buy no machines at all, use EC2″. On the other hand, I speak with managers and executives who will happily testify to the millions of dollars they’ve saved by using products like Salesforce. At the Salesforce conference yesterday the logo was the word software with a red slash through it, and often a room full of business users would applaud when someone boasted of reducing headcount in the IT department. If you are a software developer, you can’t help but feel a little out of place. No?

Taking a step back, I see two groups, an emerging industry, and a gigantic, uncontrollable economic wave. The two groups are technical administrators and developers used to maintaining hardware and deploying applications, and business users who are eager to cut costs where they can. The big wave is the weakening economy (at least in the US) that is either at the bottom of a small recession or at the beginning of a depression unlike any seen since the 30s (depending on who you read). Add to this an emerging industry of Platform-as-a-Service. Just like the recession in 2001 and 2002 pushed many organizations to offshore development, the weak economy of 2008-2009 might just be the force that pushes many organizations to forgo heavy investment in hardware and custom software development.

What are you doing to prepare for this “generational shift”, this wave?

Dejan Bosanac

AddThis Social Bookmark Button

Dependency management was always one of the crucial Java project management tasks. It’s where tools such as Maven and Ivy make all the difference and allow developers to maintain their project dependencies in an easy way. There are two important elements for this to happen:

  • Centralized repositories - containing library JARs
  • Metadata - describing those JARs and creating repository structure

This is something we have for years thanks to the Maven developers. But if you ever tried to manage dependencies manually in your project, you know how tedious this task can be:

  • Find a library you want to include
  • Find out its metadata (groupid, artifactid and version)
  • Put an appropriate XML snippet in your project management definition file

I find step number two especially tedious and that’s why I’ve always thought we need an additional component to make our lives a bit easier. That missing link are “indexes” that would make repositories easily searchable and provide infrastructure for building useful tools for developers.

Fortunately, there has been some activity in this area lately. First, Eugene Kuleshov wrote about new Maven plugin for Eclipse and general purpose Nexus indexer. If you use Eclipse for the Maven-based project be sure to try this stuff out. It’s really refreshing approach to working with your poms (especially a quick search funcionality).

While I was at this, I wanted to see if there were any progress on web sites that offers similar services (which I think is important tool for Java community). mvnrepository.com has some problems with stability (and performances) lately and I was glad to see Xavier Hanin’s new project called JavaRepo. It’s a promising start, (simple UI and useful info) and could be made into a really useful service. What I would like to see from a service like this is:

  • Ability to add additional public repositories (snapshots, etc) and snippets
    for configuring poms with appropriate repository definition
  • Ability to “subscribe” to a module and receive new release notifications in
    news readers (RSS/Atom)
  • Better result sorting (newest revisions first, relevance, etc.)

I know all this takes time to brush, but it’s great to see things are moving in the right direction.

Shashank Tiwari

AddThis Social Bookmark Button

If you haven’t read anything really silly in a long time, then here it comes!

The caption of a picture in the Wired magazine reads –
“Jason Fried (left) and David Heinemeier Hansson of 37signals helped develop much of the software that has enabled Web 2.0. Photo credit: Jessica Wynne.”

Here is the link to the original article and the photo — http://www.wired.com/techbiz/media/magazine/16-03/mf_signals

I am wondering if Wired has created a new definition of web2.0! Folks at zillions of companies including Google, Yahoo, Wikipedia, Adobe, Sun, Microsoft and ….developers programming in tons of technologies including JavaScript,PHP, Python, ActionScript, Java and ….you are all out of luck :)

What do you think?

Tim O

AddThis Social Bookmark Button

“Get Over Yourself” is advice I’d give to anyone trying to get into technical writing, it’s the technology, it isn’t you.

It isn’t like I’m against tone and color in writing. I enjoy Jim Elliott and Brett McLaughlin, and I learn a lot from both of them. But, they are original, they earn it. I like Scott Oaks style, personable, but not over-friendly - Java Threads was one of the best books I’ve read. What I’m getting sick of is technical writing riddled with too many jokes, asides, stories about extreme sports. I don’t like reading books where every chapter starts out with a story about hiking, or a Daily WTF story about some horrible mythical corporation full of complete idiots (I’ve worked there, I’ve written those chapters).

As an industry, I think we’re too focused on personality these days. There’s a class of conference rock stars that runs around and talks trends, and I think some of this has leaked over into the way we write technical books. Everybody writing a book these days wants to become “that guy with that blog that I saw at that conference”. So in the tradition of Charles Nutter, I’m going to ask the question: Can you effective be one of those travellng conference rock stars? Write a series of well written books? And, be a formidable coder on several core open source projects at the same time? Probably not. So, let’s stop building up the “Coder” as “Superman” idea.

These days, I’m ready for technical books with a little less personality and a lot more substance. Please don’t get me wrong, there are certain authors I like personality from, I’ve already listed a few whom I read, but whenever I come along a new technical book these days I’m looking for technical content, not a new best friend. Antisocial? Yeah. Totally, I’m the guy at Starbucks that doesn’t appreciate the small-talking Barista. Alone? No, I think anyone heads-down at work, reading a book about something like Ant, wants a concise, easy-to-read reference that keeps the chitchat to a minimum.

I’m tired of your funny technical stories and your metaphors: please, just the facts. OK, wait, calm down. I’ll read and enjoy the witty stories, as long as the ratio of hard technical content to witty stories is greater than 10:1.

It’s a little harsh, sure. But, I don’t think I’m alone in this idea. I was just talking to someone who bought a new book on Ruby the other day. He told me that while it was informative, he found it difficult to scan. Difficult to pick out the one or two sentences he needed to read in 5 minutes. I can’t say I haven’t had that happen to me lately….. I’m turning down the color commentary dial at least for the next few books.

PS: It is also a message I’d give to the subjects of this photo in a recent Wired article. Vamping coder rock stars. I’m sure the persons pictured in this article had no control over the Wired photographer, but reading this makes me want to write more Java. Honest, a picture like that makes me want to attend less conferences, write more books, and get heads down into some coding.

Growing tired of the rock stars in programming that hire professional photographers to bring dramatic lights to the studio so they can looked seductively into the camera for some Ruby on Rails blog they are hosting (no DHH I’m not talking about you). I think we’re straying from technology and getting too much into personality. (Ironic, where’s the technology in this post.)

(For the record, this is about no one in particular. Matt, this isn’t about you. Raible is someone I read, listen to and I follow his recommendations frequently. Charles Nutter, also not about you. If I were president, Charles Oliver Nutter would be in my cabinet as the first Secretary of Dynamic Languages. This is about everyone. And, before I make DHH curse at me, this isn’t about you, I’m sure you find that photo as ridiculous as we all do. Hell, people, this is about me.)

Shashank Tiwari

AddThis Social Bookmark Button

In the last few years India has emerged from being a small outsourcing destination to a large computing powerhouse (especially as far as programming resources and their critical skill sets go). Its one place that boasts of millions (not just thousands anymore!) of Java programmers. One reason for this growth has been the love for Java among enterprise customers up here in the United States, who outsource work down to India, and another has been the continued support from Sun and its affiliates (many of who train around its well recognized certification programs) in providing ample training and mentoring infrastructure in India. Yet, one more important reason has been the use of Java (over its traditional counterparts — i.e. C & C++) as the language of choice for instructional purposes in teaching programming languages at educational institutions. Finally last but not least, Java is easy to learn and there is too much out there on the web to help you get started :)

In the last couple of years Java has seen strong competition from two directions. The growth of Rich Internet Applications (Ajax and Flash platform based) got many Java programmers to use non-Java UI technologies with there Java servers and the advantages of dynamic languages (like Python and Ruby) lured the Java programmers away from the language towards efficiency and “more-with-less”. This phenomenon is global but local impact (in the United States) has so far been the greatest. However, it got me curious to see how these changes were impacting the millions in India. I started out by finding out the “State of Flash based RIA Adoption” by engaging in a conversation with an active developer and community leader to get a feel of what’s its like out there in the field. I plan to cover Ajax and the dynamic languages related discussion in subsequent posts.

Paul Browne

AddThis Social Bookmark Button

My fellow Java Developers. Two years ago I wrote an article on ‘Web 2.0 and Enterprise Java - move over Struts‘ looking at what was likely to replace Struts 1 (then and now a de facto web standard). How did our predictions fare?

Remember that article (and this one) isn’t looking for technical best, but which is going to be a best investment of your time to learn (in a mercenary commercial sense). And if you’re deciding which to use in a project , which framework is going to be easiest to support in 5 or 10 years time?

Broadly speaking, the frameworks we talk about break into two types: those that treat the web as a set of pages, and those that treat the web as a set of components (think Visual Basic, Delphi or Oracle Forms act-a-likes).

So , what has changed in the last 2 years:

  1. The rise of Spring. Not only has it gone mainstream, but the Spring MVC, Spring Webflow and Spring-JavaServerFaces are very powerful and widely used web frameworks. A sign of how things have changed is that for Sruts 1 the Spring guys wrote the integration for the (then) bigger Struts framework. For Struts 2 , the integration was provided by the Struts community. With the forthcoming Spring 3 release the framework is increasing momentum; More annotations and less XML in Spring MVC; Rest Web Services out of the box, support for Dynamic languages like Groovy and Spring Webflow becoming a more ‘just use it where you need it’ solution.
  2. Adobe Flex and OpenLaszlo - Flash graphical interfaces on the Web, built using Java. I don’t think these will be *the* mainstream choice but I do think the will be more than a just a niche. And for design led companies, nothing else (not even Microsoft Silverlight) can come close in terms of a user ‘wow’ factor.
  3. JavaFX and Applets done right (Jim Weaver has a good article on this). More of a competitor to Adobe Flash as both are rich content in the browser using an easily obtainable plugin. JavaFX will appeal to developers because of it’s Java like syntax. I hope I’m wrong, but for rich web content, would you put your money on Sun (an Engineering led company) or Adobe (an almost apple-like design led one)?
  4. Frustration with JSF (Java Server Faces). For the last 3 years I’ve thought that ‘*this* is the year of JSF. I’m still waiting not because of lack of demand (as web apps become more complicated and use more Ajax they become more like the JSF component based model). It’s now uphill for JSF as I (and a lot of other Developers) have given up. I’m still waiting for the ‘EJB 3′ moment when JSF becomes more simple and more usable. Remember , we ‘re not talking about technically best, but which is going to be in widespread use.
  5. Google Web Toolkit (GWT). Looking at it one way , GWT is JSF done right - a component based web framework , but one that is fast and has a lot of community support. Even then it took me a long while to warm to GWT - I’ve bad memories of web-components that hide their internals (remember Microsoft Interdev 10 years ago?) . What got me over the hump was thinking of GWT as a compiler not to Assembly or bytecode , but to Javascript and HTML.

How has Struts 2 got on in the meantime? I’m not sure. Remember , Struts 2 is very different from Struts 1. Conceptually it’s very similar to Spring MVC (Simple Java Beans based with configuration); Slightly easier to learn and maybe slightly less powerful than Spring (although both are more than capable for most Enterprise web applications.

The ‘I’m not sure’ bit comes from two (non technical) factors:

  1. Struts 2 hasn’t achieved the massive Enterprise developer mind share that Struts 1 did. It’s a better framework, but it’s got more competition.
  2. If you’re using Spring in the middle tier, why not have one less framework and use Spring MVC (instead of Struts 2) in the presentation layer as well?

Back to the previous predictions , how did we get on?

Scenario 1: Adding Ajax to existing Struts Applications. Use AjaxAnywhere - closest to the approach taken in the article Sprinkle Some Ajax Magic into your Struts Web Application. Despite writing this article , I see the frameworks evolving rapidly to the point where you would only take such an approach for adding Ajax to ‘Legacy’ applications.

How did we do? I’d maybe widen the choice of Ajax Libraries (to include DWR , Dojo, Prototype and others) but the basic idea of evolving rather than replacing your Struts 1 app still holds true.

Scenario 2: Need Ajax Now for a new Java Application. Use Appfuse as it gives Struts, Ajax (with DWR) and the possiblity of JSF integration now, all ‘out of the box’.

How did we do? I still recommend AppFuse, as it combines (name-your-web-framework) with Spring Hibernate(and other ORM) and Maven. However I’d now tend towards choosing Spring MVC (unless you’ve a reason to use Spring 2), given that you’re probably already using Spring in the mid tier.

Scenario 3: Medium Term. Use an implementation of JSF (either MyFaces or whatever Appfuse promotes - probably Struts Shale). Struts Shale (JSF) has so far released only ‘overnight’ builds. Apache MyFaces (JSF) tool support and Ajax capabilities are likely to improve over time. Both Struts-Shale and MyFaces are likely to play well with AppFuse , making it a safe bet for investing your time checking it out.

How did we do? Struts2 and Spring both still give you migration route to JSF. But do you want it?

So out of the creative ajax-induced chaos of 2 years ago, I see 4 or 5 clear choices in Enterprise web frameworks: Struts 2 (as a follow on from Struts 1). Spring MVC, due to the huge mindshare Spring has on the mid-tier. Google Web Toolkit , both as a natural home of frustrated JSF developers , and because who’s going to argue with the people who gave us maps and mail? Flex, because Flash apps done well just look so good. And JavaFX, because Applets-haven’t-gone-away-you-know.

In my view, we would have been delighted to have any of these framworks 5 years ago. And each (for different reasons) is likely still to be popular in 5 years time. Your missions now is to pick the one that suits your project needs.

Robert Cooper

AddThis Social Bookmark Button

So I want to pontificate about SOA in the Enterprise for a few minutes here. I, as an “enterprise” developer obviously have an opinion on this topic, but this final rant was spawned by listening to Dalibor on Java Posse speaking of OSGi in the Enterprise. I had a similar conversation with 
Brian Ehmann, the Java Posse intern, a while back. So I want to address several things.

First, I want to talk about OSGi, and why I would never allow it in “my” enterprise. In “my” enterprise I want absolute control over what every service has in its runtime environment. Indeed, as a longtime Fedora user, one of the things I loathe about its Java support is the dependency system that works just as Dalibor describes — at the OS level. The beauty of Java on the server is that applications and their API dependencies can be packaged into a single artifact (WAR/EAR) that is completely isolated from the library install or configuration of the server itself. Anyone who has dealt with install libs on Unix machines understands this. Indeed, if any two of your “enterprise apps” had to have the same version of something even trivial, like Log4J, this could become a serious problem for deployments.

Secondarily, the last thing I want is my application “updating” itself without my (or Major League Baseball’s) expressed written consent. One of the “theories” I have espoused for a long time, and indeed one of the reasons I fell in love with J(2)EE is the WAR  file, and having a singular artifact from the developers. A WAR/EAR file is an artifact that can be built by development and move seamlessly from development, to QA, staging and production as a singular, atomic unit. As soon as you introduce dynamic dependency updates in your production systems, you have lost this atomicity in terms of production bits. It is true that OSGi does not mandate this loss of atomic control, but it does encourage it.

Of course, this example has a certain narrowness of focus. Of course things within the enterprise change, but one of the advantages of a Web Services based infrastructure is low-level dependencies as I have discussed to this point are maintained independently. At the service level, of course you need to control change. In my current environment we do this by endpoint management and control. This is one of the things that strikes me as a failing of “SOA” as a “solution”. Endpoint discovery is almost never a real problem for the enterprise. Low level network services like DNS are perfectly adequate for controlling this. Barring that, in the “WS” world. simple things like controlling HTTP routing through Apache or a specialized load balancing product work well. These solutions make it easier than most “SOA” products to run multiple live versions of a service without forced deprecation as well. Sure OSGi can operate at this level for service version control, but why trust it? Why allow binary update of runtimes on servers when endpoint URIs are easier to control over time?

Finally I want to address the issues of SOA as a failed technology. Bill de hOra and Joe Gregorio have noted that SOA has reached the “assign blame” state of failure. Indeed, here on the O’Reilly network shadows of this meme have kicked around.. I want to note that SOA is still a valid idea, but much like BPM, the marketing doesn’t live up to the hype. In enterprises with “architect” staff who are fundamentally unqualified– though I don’t believe the position is unnecessary in medium-large organizations — or a technical debt load that has become unmanageable, SOA proffers no real solution to any problem. Companies selling their SOA product as a silver bullet to said architects that will eradicate said debt are doing so at their own peril. Best case, their thousands of dollar projects will be quickly forgotten failures. Worst case, these enterprises will feel scorched by the failure and never want to deal with the same companies again. In reality, the former is most likely, since the people making the decision to go with the failed technology products will keep their jobs, blaming the failure not on their own lack of understanding of the enterprise they are responsible for but the vendors. Indeed, these sales relationships mean the same vendors get to come back when the next “Silver bullet” enterprise solution is available.

Shashank Tiwari

AddThis Social Bookmark Button

Bruce Eckel says Java is at an “Evolutionary Dead End”. His perspective is that retrofitting newer features into Java is making it absurdly complex. He states the choice is between no more evolution or breaking away from the past. In any other scenario he suspects things are only going to get worse. As a passing by remark, he proposes moving on to Scala as an exit strategy, if Java continues to evolve while honoring backward compatibility.

Technically his point is valid, realistically what are the millions of Java developers who build Java applications at thousands of enterprises going to do if they can’t incrementally take advantage of some of the newer features? It may be possible for Ruby or even Python to radically break away from its earlier versions and start on a fresh slate because not only do they have lesser number of deployments but on an average they have programmers smarter than the average corporate journeyman.

Java has evolved from being a replacement for C++ to an all pervasive cross domain programming language. One of the primary reasons for this growth has been the abundance of features, availability of commercial and open source implementations of these features and wrapping up of these features in all sorts of APIs, with the assurance of stability.

If we drop everything and restart, won’t Java be a completely new language? How would we guarantee we get everything right this time around? Which portions of Java will benefit from reinvention the most? What will we do while we are busy reinventing, knowing what we are doing is soon to be rendered obsolete — it won’t get done in a jiffy in any case?

Shashank Tiwari

AddThis Social Bookmark Button

In a recent interview Dr. Gosling said -
“If you look at something like Flash, when you get to the much more advanced stuff — with richer interfaces, more complex network protocols, more complex APIs — it really falls short.”
Source : Redmond Developer News

While, I would agree with Dr. Gosling, that the Flash VM, the ActionScript library and the Flex framework is not a be-all and end-all RIA solution (remember that its incarnation as a application developer’s tool — as opposed to a designer’s easel — is fairly recent and it is continuously and rapidly evolving as we speak!), I have a feeling Dr. Gosling is actually saying that the grapes are sour ! (For those who may not be familiar with the fable of the The Fox and the Grapes read on and you will quickly see the connection.).

At this time in its current form and shape Flex is a great option. Further, far from being competitive, at Saven Technologies, we have experienced that Java and Flex are complementary and can help build rich interfaces fairly effectively. Let me explain some more of this, but before that let me dissect Dr. Gosling’s comments and set the context.

Dr. Gosling has specifically pointed out that the shortcomings are related to support for networking protocols and complex APIs. My reply — TCP and UDP are two popular transport level protocols. Flash supports TCP. It does not support UDP. At the application level Flash supports HTTP and HTTPS. It supports AMF, which is a SOAP like but more efficient message format, and RTMP, which helps stream audio, video and data across the Internet. It does not support many application level protocols including SMTP, POP3, RTCP and many more. With the protocols in Flash repertoire one can build most consumer applications that utilize HTTP, Web Services and RESTful constructs.

One of our financial services clients was not satisfied with this. Not only did they want remote procedure calls, they desired real time data push and secure connectivity. With the help of LifeCycle Data Services, a server side integration technology that runs without a fuss in any Java application server, and the protocols mentioned above (AMF and RTMP), we could easily achieve what our clients desired. LifeCycle Data Services has open source cousins — BlazeDS, GraniteDS and more.

So while Dr. Gosling is right that Flash does not support as many protocols as Java does and he is also right that it does not have direct support for complex APIs, let’s say for messaging systems or database connectivity, the question is that does flash (with its Flex framework) really fall short because of the lack of these. Not really, on the contrary it piggyback on Java and PHP and others for such extensions. We are primarily Java experts who graduated to using Flex as the RIA and we see no trouble in leveraging the Java infrastructure that is so rich and robust. In the application that I was talking about earlier, that required real time updates, we used JMS for subscribing to the market data feed publications. Flex messaging and JMS worked well together and it was just fine.

Finally, Java Applets has support for many networking protocols and complex APIs, then why is it falling short of expectations? Weren’t there other things, including the well known JRE version mismatches that brought it down? Why is Sun creating JavaFX if the most critical ingredients — at least the way its worded it makes me believe that these are so — are already brewed in?

I feel very disappointed when a person I deeply respect and revere needs to make such comments. Java as a language and platform is very comprehensive, user friendly and productive (despite all the noise from the Rubyists) and works in harmony with many other technologies, including Flex. If JavaFX and the Consumer JRE deliver the promise I am happy to adopt it, as I have adopted Applets, Swing and the Java web application technologies so far.

Dejan Bosanac

AddThis Social Bookmark Button

If you haven’t already, be sure to read Steve Yegge’s post on his experience of dealing with large code bases (it’s a bit long post but an excellent read).

He explains the maintenance nightmare of his 500.000 lines of code game written in Java and quite correctly concludes that code size is a crucial problem for big software projects.

Shashank Tiwari

AddThis Social Bookmark Button

Let me start by wishing everyone a happy new year ! I hope 2008 is prosperous and peaceful for all of you. For many of you who still take pride in being a Java developer, I also put down a list of top 5 expectations from the year that has just started. It may be presumptuous on my part to create a single list of top 5 expectations for the eclectic world of Java developers but none the less I will do it! Some of you will agree, some of you will vehemently disagree and the rest will remain silent. In all the cases though I hope to provoke you to think about what you want and desire from the language and platform that you are so intently connected with.

So let’s get started -

1. JavaFx transforms from hype to reality
In 2007 starting with JavaOne, we all heard that the messiah has arrived in the form of JavaFX. Unfortunately, the entire promise is taking too long to manifest into a real option. Hope 2008 either converts it into a real, simple and viable option, so that Java developers don’t necessarily need to take refuse in the alternative rich interface technologies, or just brings all the hype to an end.

2. Glassfish enters the application server choice bundle.
Glassfish is a fantastic open source Java application server and platform. It was the first one to be compliant with the Java EE 5 standards. It has implemented almost everything that the JCP is churning out. It works and it is powerful. However, it still remains an unknown application server in the enterprise. Most managers have never heard of it, many Java developers have never bothered to download it and many others think its not a serious option, even without checking it out. Hopefully developers start taking its advantage in 2008.

3. Lightweight/Heavyweight discussion is put to rest
With Java EE adopting many of the advantages of frameworks, tools and libraries that figured out how to do things in a simple and straightforward manner, the divide between the so called traditional heavyweight Java and its lightweight alternatives is blurring. However, many of the staunch believers and promoters of the lightweight frameworks are not letting the debate rest to peace. May these folks find something more useful and new to champion ! Also, those who switched sides altogether in favor of those dynamic options, beyond Java, that was supposed to cleanse them of all evil may return once they find that their simple framework fails to deliver simple database manipulations or relies on your same old ways to integrate with other things in the enterprise.

4. Google likes Java, somebody convince Apple too :)
The iPhone is popular and many iPhone applications are being built. So far Java is poison for Apple. Hopefully things change this year. Hopefully Java developers gain from this surge! Google has already helped the world of Java developers with its numerous open Java APIs and services. Its has also reinforced that when the winner adopts you, you flourish and proposer! So its not as much about being with Apple the company but its about being in the winner’s camp.

5. Unify some and sunset a few others
Plurality in the world of Java provides ample choice to do even the most mundane of tasks but it often leaves Java developers confused in the middle of this abundance. Java developers for a few years now spend a considerable amount of time contrasting and comparing the numerous commercial and open source frameworks, tools and libraries to get their job done. Hopefully, 2008 sees some of these projects merging and some others just waning into obscurity. Hopefully the feudal lords realize that although dictatorship is detrimental, a unified nation state has its benefits.

Thats all for now!

Speak up! Say whatever you have to say, its all about what you want:)

Once again, a happy new year!

Dejan Bosanac

AddThis Social Bookmark Button

There’s a quite interesting discussion in the blogosphere about proposed extension methods feature for Java 7. The problem tackled by this proposal is how to extend an API (interface) with new methods without breaking existing implementations. The example used in a discussion is a List interface and the sort() method. In order to add another method to the existing interface, Java developers today create static utility functions. Take for example the java.util.Collections class, which is a set of static helper methods for working with collections. Among them is of course the aforementioned sort method.

Robert Cooper

AddThis Social Bookmark Button

I want to talk a little about Android. I am very much going to sidestep the holy war about is it or isn’t it Java, except to say, this looks a lot like something that would have been derived from the Danger stack. The commonalities are striking. As a Sidekick owner, I am terribly pleased with “Java-ish” development for that platform, and I think seeing something similar in wide deployment is great. That said…

First, lets talk about the Android UI API. I recall last year at Sun Tech Days,”The Gos” was asked what, in retrospect he would do different with Java. The first thing he came up with was the Swing API. The “747 Cockpit” feel of the API is overwhelming to new users. Frankly, Android takes this to a whole new level. Just look at the JavaDoc for the Checkbox class:

Constants inherited from class android.view.View