Skip to content

More Java Futures Speculation

For what it is worth, here are my current postulations and position regarding “Where to now, for Java”…

Consider this: Microsoft’s customers don’t buy into C# (regardless of what most techies will tell you), they buy the Visual Studio packaged, pre-canned development pathway to development nirvana. They take on a particular packaged view of the world. Then they pretty much sit back and go where Microsoft leads them. It’s a well-marketed, appealling, popular, putatively risk-free and well-trodden strategy.

(Dont’ kid yourself that the marketing is actually real, however. Script-kiddies will produce script-kiddy grade coding, regardless of the quality of the marketing, or the prettiness of the tool. Trust me, I’ve seen the code! The only way out of this is training and experience. There’s a cost there, both dollars and time, so the professional managers that now rule our world will do almost anything to avoid that cost.)

The Microsoft market is notoriously not innovation-driven. The customers and practitioners typically don’t care less about better ways of skinning the cat, as long as it gets skinned somehow.

On the surface, this seems fine and dandy but let’s look around our modern world to see if innovation actually is or is not needed…

  • I am pretty happy that I don’t drive a Model-T Ford: love those modern innovations like anti-lock brakes, seatbelts, aircon, airbags pneumatic tyres and suspension systems. I am VERY happy that I don’t have to ride a horse…or a donkey.
  • I’m grateful for penicillin.
  • Being able to step into a Boeing 747 to travel half-way around the planet has certainly changed my life.
  • Love the lidocaine that my dentist pumps into me before digging around inside one of my teeth’s root canals.
  • I often remark at the way modern materials have changed the game of Tennis (sometimes for the worse but the actual rackets are indubitably superior to those of yore).
  • Let’s not forget that ASP.Net is better because of the influence of JSP/JSF technology, and that JSP/JSP (especially JSF) is better because of ASP.Net…that raw competition has been good for all concerned.

Innovation does make a difference, it seems.

Oh well. That was then, this is now.

(It is interesting to note that Microsoft is finding it hard to add new features into C# nowadays: the customers are effectively saying “we dont’ need no stinkin’ innovation”…)

So: I see Java becoming Oracle’s C# analogue.

All Java’s best features…all those features that make it attractive to Oracle the tool vendor (a mature, stable, efficient, cross-platform execution environment with minimum cost of development and support but with maximum market penetration)…will be ‘deprecated’/no longer mentioned. They will still be there and still be relevant but they will be pushed under the covers. You won’t see them and Oracle will educate you to let you know that you don’t even need to see them. What you’ll ‘need’ is to buy their product set. The product set that has been carefully engineered and (especially) advertised to sit right in the sweet-spot of minimum effort to produce and maximum profitability…for Oracle.

You’ll be bombarded with marketing and other influences to ensure that you forget those Java communities and competitors out there (you know, the ones that have benefitted your world over the past 10-15 years); Oracle’s sales team will be happy to explain to you why you don’t need the likes of Apache.org, the JCP, Spring, JBoss, etc. any more.

As long as you cross their palms with copious quantities of gold, Oracle will show you the One True Way.

Hopefully, there will be some sort of convergence between what Oracle will feed you and what you actually need.

Just remember what happens to a drug addict when he/she can’t pay their dealer…

The current Java-based multi-vendor marketplace simply won’t be able to survive under such conditions.

Don’t believe me? Want proof? Answer me this, then: what’s the second-best selling C# IDE in the windows world? There pretty much isn’t one, is there! Or this: what’s the alternative framework to ASP.Net? Again, there ain’t no such animal…

It’s the end of the world, people!

Perhaps one day in 2025, some manager with an atavistic streak of innovation in his/her DNA will suddenly pause the “Oracle Charge-O-Meter” on his/her pay-per-cycle copy of “Oracle Developer Brain Enhancement Interface for the Enterprise 17.7c” and think: “You know, what we need is a way of building Open Systems and not being beholden to a single monopolistic vendor! Wonder why no-one ever thought of that before?” I’m assuming that about 100 cycles after detecting such a wayward and unprofitable thought, the “Oracle License Mangager” will take appropriate remedial action…

Whoops! There I go! Again with the Open Systems thing…

Tags: ,

You Just Had To Be There!

A recent conversation went something like:

RK: You just sent me a ‘p’ record…
DN: There’s ‘p’ in the database.
Me: Please don’t ‘p’ in the database!

I’m still giggling, but then I was brought up on “The Beano.”

Why Spring?

While taking a break from wrestling with the absurdly abominable Oracle Service Bus (OSB), I attempted to explain why, IMHO, the Spring Framework was the way to go.

I’ve been known to say: “Don’t start a Java application without Spring. Ever.”

The primary reason for this is versatility. I can and have used Spring to:

  • Develop various species of plain ‘ole web applications
  • Develop webflow-based web applications
  • Develop reporting applications incorporating eclipse BIRT
  • Develop Swing-based desktop applications (using TeeChart)
  • Develop batch processing systems
  • Helped develop XML pipeline processing systems (alongside Stylus Studio‘s XML processing framework)
  • Develop system integration processing flows
  • …and probably a few more bits and pieces…

The Spring-oriented skills I have built up have let me work in a substantially standardized way regardless of the situation.

That’s pretty darned good, if you ask me!

Is this same story true of the obnoxious OSB? No.
Is it true for any implementation of the J(2)EE spec.? No. From any vendor? No.
Is it true for other frameworks like JBoss Seam. No.

Anyone know of any other framework out there offering similar flexibility, ‘cos I’m darned if I do.

The Spring framework isn’t standing still, either…it’s the foundation for both Grails and Griffon. As I have adopted these technologies, my productivity has increased greatly. I am “standing on the backs of Giants.” This is a Really Good Thing.

Let’s add a modicum of “Systems Thinking” here. Rather than wasting time training a multitude of staff in a multitude of (typically short-lived) siloed technologies…some of which are honestly horrid…it makes much more sense to build a solid core of experience with a solid core technology.

Whoops! Here I go advocating a standards-based ICT world…again.

‘Standards.’ “Systems Thinking.” How naive am I!

[...edit...]
Received an email from Manning the publishers a while back:

I know that this is not a scientific measure of ‘goodness’ (if one were even possible), but it speaks volumes to me…

Tags: , , , , , ,

CI: Continous Integration Or Coitus Interruptus?

(This post is the result of a recent, slightly orthogonal, slightly bawdy discussion…)

I have pretty much said this before, but it won’t hurt to repeat it a bit more plainly (please excuse the non-MA nature of this posting…any percieved ‘crudity’ is not intentional): doing Continous Integration without proper associated testing is like having sex without going “all the way.”

Both seem great fun initially but with repetition become more and more unsatisfactory and pointless.

More: both practices ultimately hinder further evolution and improvement. Of your codebase in one case, and of the Human Race In the other.

Refer to the CI Maturity Model for more on how to do CI properly.

Normal child-safe programming will now resume…

Tags:

More Tragic Still

Following on from my earlier admission.

I’m now the owner of a shiny new iPhone 4.

Happy to report no Grip Of Death issues for me. That I have yet noticed, anyway.

I have been caught by the suspect proximity sensor issue, though. The somewhat serendipitous and slightly suspect fix seems to have worked for me…so far…lucky me.

The reality distortion field generator embedded into (or embodied by, perhaps) the device seems to be going strong…

I’ll admit that I’m still absolutely amazed by the device, faults or no faults. Seems to me that it is bringing us all one step closer to the sort of sci-fi future that I read about as a youngling. I really can imagine Captain Kirk picking up his iPhone and telling Scotty to “beam me up.”

[...edit...]
Spoke rather too soon there. That purported ‘fix’ for the proximity sensor issue didn’t actually work: every time I participate in a phone call the flaming device mutes, holds, loudspeaks, dials and generally p*%$&s me off! If the version of IOS due Real Soon Now doesn’t fix this behaviour, I may well take the device (I hesitate to call it a phone at this point in time) back to Apple for a “please explain” and a refund. The reality distortion field is weakening fairly rapidly…shame, that. I still adore my iPad.

Tags:

The Three States Of Testers

Some “pop philosophy” for a Tuesday night…

Today was “first-look” day for the users of the system that I am currently working on.

After observing the users start in on the system and then watching them hack around the screens for a while, it occurred to me that I was seeing (at least, probably) three different types of behavior.

My background as a chemist came to the fore at this point and it occurred to me that I was actually seeing three states of matter at play.

The first state: solid. This type of user basically stayed where they were put. They logged in, typed what they were told to type and seemed happy to do nothing else.

Next were the liquids: these guys showed a bit more ability to ‘flow’ around the system than their colleagues. They found more ‘features’ and generally got more involved in things.

Then came the gases. These whizzed all over the place, escaping the confines of the system and generally finding leaks and holes all over the place. In the long run, these users were clearly going to be the most reactive and energetic. They were most likely to get the best return on their efforts.

Quite a nice analogy :-)

Now here’s the clincher.

As one develops and tests software one needs all three of these states at some point.

You can maximize your testing if you can arrange your user testing so that it…and your user communities…follows nature’s path: solid – liquid – gas.

You’ll find that the solid testers will pick up the easy, common, 80% of impactful bugs and –importantly–will be happy doing so. At the end of solid testing, you won’t have the perfect system, but you will have one that satisfies a good proportion of your user community’s needs.

Follow up with the liquids…they will help you trap some of those more grungy edge cases that always seems to be forgotten about. Again, the quality of the system will be increased and you will have another user community that is nicely ‘behind’ you.

Time to let the gasses roam free! They’ll get into the last remaining nooks and crannies and the result will be a good stable system. The gasses will be happy, knowing that they have contributed in a meaningful way without being waylaid by–to them–trivial and easy/’obvious’ issues.

Like all analogies, this one breaks down fairly quickly: in the chemical universe, there are so many more gasses than solids ‘out there.’ For testing, the reverse is true.

This reminds me of how systems like submarines are pressure tested with nitrogen, so there must be some truth in it, somewhere…

Sadly, today we didn’t follow nature’s “true path” to testing nirvana!

Still: epiphanies have to come some time…usually as a result of some quantity of pain.

For sure, I’ll be better able to express what I want from a testing process next time. We live and learn!

Testing philosophy, what next!

Eat your hearts out Kant, Heidegger, et. al…

[...edit...]
“Time to let the gasses roam free!” is not a reference to bodily functions! Shame on you, gentle reader (you know who you are)!

Tags: ,

LogMX: The Universal Log File Viewer

I was introduced to this nice tool today. Thanks Chris!

Here’s the blurb:

LogMX is an intuitive and easy-to-use cross platform tool for developers and administrators working with log & trace files.

Neat-o.

Both free and commercial versions exist…

Tags:

Sad Times In The Land Of Java

I knew it would happen eventually! It’s not unexpected.

Oracle was 100% bound to screw Java over. Bound to. never had a skerrick of doubt.

The first strike (not really Oracle’s fault but it is out there and needed proper management): a spooked community. Java devs are loyal beasties and really wanted some “warm fuzzies” from Oracle. They got squat. All those third-party organisations that based their products or enterprise strategies around the Java platform wanted assurance of a light touch. Did they get it…hah!

Instead, they got…

The second strike: Oracle suing Google. Anyone outside the legal community going to benefit from that, do you think?

The third strike has now arrived: Google backing out of JavaOne. Hear that sound? That’s the thunder of a community running away. Way to go, Oracle!

We all know that three strikes and you’re out…

Where to now?

Time to start polishing my C#?

Haven’t used Objective-C since the NeXT days, but maybe an iPhone betting game would be a winner: “What stupid thing will Oracle do next?” I envisage some neat graphics: an animated Larry sailing around on a ocean of lawyers, occasionally dumping assets overboard…The winner each week would get the major prize: a cup of cold instant coffee; all the other players would have to reboot their devices.

Tags:

Good Words On SVG From Microsoft

Really looking forward to Microsoft support for SVG in IE9…

They seem to be finally “getting it.”

As I said before: About Bloody Time! It would have made my life on an earlier project a whole lot easier.

Tags:

I’m An Apple Fanboi!

Ok. Time to come clean. I am a long-time Apple fanboi.

Way back in the early ’90′s I was a big-time Apple Macintosh fan.

I was an eager (and even somewhat evangelistic) Mac developer.

I was quite active in the Hong-Kong Mac User group and at one point I ended up ‘singing’ on stage at Hong Kong MacWorld in a vain and ultimately futile attempt to keep an audience entertained while trying to buy a recalcitrant Mac time to connect to the new-fangled and still cantankerous ‘Internet’-thingy. I hereby apologise to any members of that audience that may come across this post for what I put you through…it all worked beautifully a few minutes earlier, honest!

I even wrote a few articles for the local MacChooser magazine (at the time, the largest such publication in Asia).

The following might give you a chuckle…

I must be “moving back to my ‘roots’” because I am now the proud owner of a spanking new Apple iPad.

Got to say that so far I am quite enjoying the experience!

The first draft of this post was written on the aforesaid iPad. Took me a while to get the hang of the on-screen keyboard, but I am getting up to a fairly good typing speed. The key, it seems, is to keep one’s fingers away from the screen and not rest them as one normally would…once I got that idea into my “muscle memory”, it all went swimmingly.

I have already boosted the bank balances of a few developers, small and large. That’s the nature of the platform: I am walking into a most-definitely-for-profit zone with my eyes wide open in this regard and I don’t begrudge the developers their dollars.

There are a couple of game-changers, notably Pocket Universe. I found it amazing to pick up the iPad, point it at the sky and see what is “out there” right now.

I am having fun imagining various other situations where this sort of application could be very useful: think of a car mechanic or a plant maintenance engineer picking up an iPad and getting a ‘virtual’ overview of the equipment that they are working on.

There is a glimpse of the future here, I think.

Bring it on!

Tags:

C, Java Enterprise Edition, JEE, J2EE, JBoss, Application Server, Glassfish, JavaServer Pages, JSP, Tag Libraries, Servlets, Enterprise Java Beans, EJB, Java Messaging Service JMS, BEA Weblogic, JBoss, Application Servers, Spring Framework, Groovy, Grails, Griffon, GPars, GAnt, Spock, Gradle, Seam, Open Source, Service Oriented Architectures, SOA, Java 2 Standard Edition, J2SE, Eclipse, Intellij, Oracle Service Bus, OSB