Enterprise vs. Consumer
There has been a recent shift in thought, where people believe that we are in a phase in which the consumer space is pushing innovation into the Enterprise space. The general thought process is that the Web has made things very easy and inexpensive to play, and has taken the lead in productivity which we now see pushing the behind the firewall types.
We can look back a little and see how J2EE was pushing the Java stack forward not too long ago, even if the EJB of then may not have been the right road to go down. Ignoring EJB, there were a ton of other great technologies that did actually simplify the life of the Enterprise. Some of these folks were trying to deal with CORBA. Others were used to integrating through messaging and may not have had quite the same pain. EJB was “simple” compared to the myriad of CORBA specs and half implementations though.
Jump forward a few years and we see EJB 3 having the main message as “simplicity”, and many other Java specs were doing the same. The worm had turned a little.
Of course, if you look back at history you see a ton of other stories. If we think back to how IBM was progressing the computer world from the Enterprise inwards, compared to something like the Sinclair Spectrum.
There is always innovation on both ends, and hopefully the “good stuff” that happens to transcends the needs of the consumer or the enterprise pops out to the other side.
A hot topic right now is “Enterprise Mashups”. A lot of large shops have seen how simple it is for the Web 2.0 folk to mash together Web systems to create a new system that meets their unique needs. As they watch this, they look at the massive integration projects they have going on, and how painful and expensive they are. Here we see the constant battle between the IT group and the business groups that want to just get stuff done. Access was so popular as people in the business units could hack on it just enough to get something done, without having to go to the IT department to get an app developed that would take forever. Internal mashups have the promise to do the same.
Of course, it isn’t that easy. A little Google Map + Data mashup is one thing. But, behind the firewall you have to deal with auditing, authorization, authentication, and all of that Enterprise stuff. There can be a reason why there is complexity.
Why am I blabbing on about this? I had some people talking to me about my recent Sun posting (you know, where they bleed a little) and a common thread was “should Sun stick to the Enterprise?” The thinking here is that Sun makes its money (at list I think so) from large Enterprise customers. The big consumer ra-ra around JavaFX as a Flash/Silverlight competitor makes Sun look like a company that it is not.
If you believe that the route to winning is “do consumer well, and then let it bleed to Enterprise” then you could see why Sun is so desperate to get this working. If you believe that there is room in focusing on the Enterprise customers, and giving them what they need, then you may see JavaFX as a waste.
I don’t quite see it as a waste myself. Chris Oliver just posted Why JavaFX? where he states:
Our goal with JavaFX is to deliver a “media” stack for the Java platform. What does that mean? Well, in simple terms, 5 things: Audio, Video, 2D Graphics, 3D Graphics, Animation
There is value there. If you partake in some of Ben’s vision, then Enterprise software doesn’t have to be grey and boring. In fact, it could even resemble a video game in some situations. So, having this stack is very useful indeed. The problem has been in the details. It has been sold at JavaOne as The Saviour. The big thing that Sun is working on. The thing you should be excited about with Java. In fact, it is some nice features that will enable us to do better things in all software.
As I outlined in my last post, I would just prefer to see a more balanced outlook, and one that showed a focus on other things, especially productivity. Blend this all together to show how the league of Java developers can productively produce compelling, usable software for their end users. There are legions of developers in the Enterprise trenches, at companies with large wallets, that would love to be more productive.
May 15th, 2008 at 3:59 pm
Dion,
I believe that JavaFX is about developer productivity. The problem with doing animation at a high level, is that it is ill-suited to the procedural paradigm. At a low level, in games, you want a procedural metaphor. But at the high level, you want scenegraphs, triggers, event routing, first class interpolators. Consider the amount of Java code needed to use the Swing TimingFramework for doing nice animation effects vs JavaFX.
Even ActionScript is not an ideal language for doing this. JavaFX is at its heart, a kind of Java DSL for doing animation. It contains procedural elements as well as declarative elements. The idea of including temporal list comprehensions and duration operators as first class citizens is amazing.
Consider: x = [1..100] dur 1000 (let X take on the values from 1 to 100 over 1 second) vs a more Java/C syntax x.begin(1).end(100).over(1000). First class list comprehensions are nicer.
There is also the notion of binding variable expressions together, so that if one of the dependent variables is updated, the other expressions are calculated too. Think Excel spreadsheet. I could write “handposition = armposition + bodyposition” and “bodyposition = legposition + feetposition” The point is, if feetposiiton or legposition are updated, then bodyposition updates, and so on, recalculating all the dependencies.
This sort of thing requires constructing a master-dependency graph and doing topological sorts over all the dependencies in the program, and hence it is much simpler to do with a new language and DSL than to shoe-horn it into Java or Javascript.
I think Sun made the right decision, just way too late to make a difference.