The Future Of Java

Java’s future will be constrained by the bounds of Oracle's business model.

Drama has been running high since Oracle began to shape up the Java technology it acquired along with Sun Microsystems. Oracle ended the impasse over a new core Java release, set out a road map for the next two years, and began reorganizing Java's ineffectual governance. Oracle's Java road map and commitment to invest reassured enterprise customers and prevented a split with IBM but alienated many in the open source community. But Oracle's plans so far fail to address Java platforms' inherent complexity, which remains Java's Achilles' heel in head-to-head competition with Microsoft's.NET platform. Moreover, a controlled, top-down innovation model will limit Java's role as the basis for the "cloud" generation of platforms, rich Internet applications, and new development techniques ranging from languages such as Ruby to approaches such as business process management (BPM) and business rules. Conclusion: Java's future in the enterprise is alive and well but limited.

Oracle’s strategy for Java will change the Java ecosystem that has existed for 11 years.

  • Oracle will direct Java innovation. Oracle has made it clear that from this point forward, it will direct all innovation in core Java (Java SE). Oracle will happily accept the contributions of others through OpenJDK as long as those contributions align with Oracle's priorities.
  • OpenJDK is not fully open. OpenJDK is covered by a General Public License (GPL), and though it's certainly true that there are alternative JVM implementations and derivatives out there, OpenJDK is not open in spirit: It's practically impossible to distribute an alternative implementation without Oracle's sanction — specifically without a grant of the Java TCK. Losing The Apache Software Foundation as a supporter also hurts Oracle's credibility as a partner with the Java alpha geeks who drive so much independent and discontinuous Java innovation. Those developers will take their energy elsewhere, probably to Apache projects.
  • The JCP is dying. The Java Community Process remains in place, but we believe that Oracle will formulate an alternative that ends the fiction of JCP as an open process and streamlines the process of Java platform evolution. The result will be total domination of Java's evolution by Oracle and IBM.
  • Competition will shift to frameworks. With Oracle directing innovation at Java's core, others in the Java ecosystem will focus on higher-level frameworks. This shift began years ago, but we now expect it to intensify. We expect most of the work on frameworks to focus on the enterprise, as that is clearly Oracle and its core partners' focus with Java.
  • Fewer young developers will learn Java first. One of Java's greatest strengths has been the number of young developers who learn it as a first language. As Java becomes less and less of a client-side language, we expect to see educational institutions switch to other languages for primary education, ones with stronger client-side representation such as JavaScript and HTML 5. Over time, developers will begin to view Java as a server-side language for enterprises — like COBOL.

These ecosystem changes will have minimal immediate impact on customers. Java SE 7 and 8 will move forward, driven by the strong consensus among Oracle's partners about the content of those releases. Customers will see predictable and stable enhancements of enterprise Java middleware. But Oracle and its close Java partners are in a classic "innovator's dilemma." It may take a decade, but the bottom-up innovation the open source community drives will find expression elsewhere, and smaller companies that Java's high-end capabilities do not serve well will gravitate toward a new "good enough" open platform — likely based on a combination of LAMP and HTML 5 open standards.

Jeffrey Hammond and I collaborated on this research. See the full report at this link.


That is a silly unfounded

That is a silly unfounded generalization. My company just shifted to .NET and the Windows Azure platform and nothing could be further from the truth. I personally have been shocked at the ease and power of using the platform. Compared to convolution of our Linux servers, and java stacks and highly overpaid, it was a no brainer to switch....sorry if that puts some people out of work.

How much did you pay to have

How much did you pay to have it set up? How much are students being paid to set it up? It would have been unfounded if I didn't actually experience it, but I did. I've used a java stack as well as a .net one, both personally, of course.
But you can't seriously compare specialized/experienced engineers with first-time students?

How about the price?

It would be the best if it were free. The free tools of .NET are bound to the word "expression" which are not full of features. If I use Java, there are many free high quality tools, libraries and frameworks for me to choose.

You get what you pay for. We

You get what you pay for. We thought we were saving so much money by using Eclipse because it was free....but when you get down to it, it was stupid. Shelling out a couple of hundred dollars for real tools vs. paying hundreds of thousands of dollars to employ experts who can assemble and manage our Linux servers, java stacks and keeping all our "free" open source crap working just doesn't make sense. It cost us at least 20X as much, but Eclipse and the Java JVM/SDK was free....

How about startup?

Maybe in big or medium size company, .NET really makes sense. But is it really good for startup company? Well, I am a student and I care about business too. I will graduate in few months. I care about Java because I am thinking about Google App Engine. I have some knowledge of .NET but when I heard people said that Windows Azure would cost you $100 a month even if there were no visit to your website, I felt it not a really good choice (for me).

Do you really think startup company should go for Windows Azure?

If you don't expect that your

If you don't expect that your product or services will ever see success or demand, then Cloud computing is probably not for you. If you just want a site with blogs and hoping for add revenue, there are plenty of $10 per month hosting sites.

If you want to build a scale on demand flexible web application infrastructure that can keep up with unforecasted demand, cloud computing is the only reasonable solution....and the startup costs are ridiculously low for what you get.

What's also ridiculous is the

What's also ridiculous is the amount of bull people come up with when they hear about FUD, such as Cloud Computing.

You can develop scalable high-end systems without having to use "the cloud", by simply using VPS - which FYI, is cheaper than cloud.

Finally, I don't understand how cloud fits in with java or .NET, since both has the same capabilities - and are a huge mess since cloud was just an afterthought.


Is it what you are talking about?,_uncertainty_and_doubt

Well, my friend have a website written in PHP which reside in a cheap hosting and sometimes his website is attacked with DDos. I don't like being attacked in that way. That's why I don't like cheap hosting. VPS costs more than Google App Engine and I must worry about many things such as installing, upgrading operating system, security,...etc.... It cost much more than GAE. GAE is free (for a certain amount of usage), so why should I use cheap hosting while I can use something good like GAE? I am pretty sure GAE is better than cheap shared hosting.

You asked what was the connection between Java and cloud. Well the answer is GAE use Java and Python. I don't know Python, that's why I use Java. But I am still considering the choice of using Windows Azure (just in case I can get some sponsors on BizSpark)

1. Cheap Shared Hosting !=

1. Cheap Shared Hosting != VPS
2. VPSes are scalable, fault tolerant and can easily deflect DDoS attacks.
3. A VPS is a professional solution, unlike free GAE; on GAE you cannot install whatever you want
4. I don't know how you are comparing a VPS with cheap shared hosting, VPSes are not shared; everyone has a different environment, and the costs are realistic
5. GAE is in fact, a VPS with features turned off to provide you a walled garden.
6. I asked what's the big deal with java and cloud
7. Neither GAE or VPSes magically turn DOS attacks to dust - you still get attacked, but the effects are less.

There's no such magical thing called cloud. It's just a FUD / jargon term for "huge messed up and grossly limited/camouflaged VPSes". Java doesn't do a single thing in the cloud that it didn't do before, same as .net, php, ruby, python or whatever crap you plan on running. Just deal with the reality.

No one out there would give you a full free server, as a developer you should have realized this?

I know they are difference

I know shared hosts are not VPSs. I said GAE was better than shared hosting and VPSs cost more than GAE (That really was what I said). But eventually, I think we strayed from the main subject.

Java comes with big and expensive things like Oracle, comes with free things like Eclipse, come with something new like Hadoop (written in Java)....etc... It comes with many things, it is everywhere and it has many fans. So I don't think it will be limited in anyway. People like it will be using it, people hate it will continue using something else.

Seems to me you try your best

Seems to me you try your best to misunderstand. It's not java that is limiting, it's google that decides what you can or cannot do.

For instance, on a VPS, you can have java, hadoop, php and whatnot. On GAE you can only use Java or Python. You can't run native code. You're constrained - a walled garden.

Same as the free cheap hosting you mentioned, where they only let you run a couple of PHP scripts...

Do I look like an idiot?

God! The second paragraph I wrote was not about GAE, it was about the conclusion of the author (who wrote the article). He concluded that Java will still be alive but limited. (That's why I said "it will not be litmited in anyway").

I have done some coding with GAE recently. You think I don't know about its limits? It does not allow you to create threads, it does not allow you to write files to disk.... God! All those details are just basic things you need to know about GAE.

Yes you do (you asked for it :)

So how exactly is GAE better for the enterprise when a PHP VPS outperforms it in features as well as several other areas?

That's your original argument, and it's false. So out of the blues, the "cloud" and GAE doesn't look that good => FUD.

I concentrate on what I need.

Do I need to write files to disk? No. I don't need to and don't want to write C code. I can't image what I need from a VPS. Install Counter Strike 1.6 on it and play game online? No! My customer need HTML, CSS, Javascript, Videos, Flash, images.... I can provide all those things to customer with GAE. Do I need BI from SQL Server? No, I don't. Banks need BI, I don't need BI. In fact, the succeed of a website is very little concern of the native code you can run or whether you can install your own operating system. It's all about user experience. It's more about what you can do with photoshop (making web UI) than choosing Linux or Windows. All I need from a server is security, less configurations, cheap, scalability, stability. It's all about what I need, what I already have. PHP? No, my Java coding ability is good. I don't think I will go for PHP. I have a mate. So we are a small group (two people). We are no expert at operating system. Using VPS means more headache, more money. I want to leave the low-level for experts because I don't have many resources. What will you do If you all you have is a few hundred dollars?

I want to emphasize that it's all about what you need and what you already have.

See, what you need doesn't

See, what you need doesn't mean is what everyone else needs.

We have clients that are more than happy with a static HTML site. We also have clients that need to dynamically generate PDFs out of HTML (reporting, tickets, documents etc), we use webkit to do this - works like a charm - but it is a native application - hence a VPS/dedicated is needed.

I've started to run my own VPS some time ago, I'm not using it commercially, and it's only ~ 240 EUR a year. Hardly a big price for a dedicated server which I can customize to each single detail. Did I mention I'm not using this commercially (hence no ROI)?

I'd like to emphasize that if something works great for you doesn't mean it is great. If my static-HTML-website clients are happy with it doesn't mean it's best than GAE/PHP/Python/.NET/whatever.

So far, I'm happy with a VPS, it gives me all the power I need for a small price.

re: christian sciberras: Cheap Shared Hosting

Before you comment, better understand what you are talking about.
1) VPSes are scalable? Scalability is not determined by VPS but by what system you are running inside
2) to associate GAE with cheap shared hosting showed how you know nothing at all about GAE
3) GAE is scalable, probably more scalable than most VPSes that you know; it is a proven technology by Google, it has the auto-scale
4) most VPS hosting I know is not as off-the-shelf scalable as GAE, not for handling spikes, say a jump from 100 request to 200 million request per minute... I bet your VPS will die, but GAE may be able to handle that gracefully
5) GAE is platform as a service (PaaS), not cheap hosting; though you are right, VPS are just a form of "expensive hosting"
6) GAE is not VPS, learn first how the Google infrastructure looks like (again, do your homework first)
7) I bet you don't understand the "cloud" term, it's not VPS (again, do your homework first)
8) GAE can run Python too, so don't just hype everything to GAE when you defend .NET and attack Java

"Before you comment, better

"Before you comment, better understand what you are talking about."

Exactly. Now let's see...

1) The idea behind VPSes is to scale with hardware. There's no other point behind virtualizing stuff. GAE Is. Not. Just. For. Scaling.
2) No one associated GAE with cheap hosting. The person above seemed to confuse cheap hosting with VPSes.
3) Who said GAE is not scalable??
4) Incidentally, GAE doesn't handle such spikes either (apparently, they've got a limit, however they're quite forgiving about it). Either case, such a spike is not natural, and if you're expecting as such, it pretty much means you ought to rethink your project plan.
5) Oh, how could we have forgotten that shiny new FUD word, PaaS! Do you even have the slightest idea how a VPS works? Hint: All the nice stuff lies under that V.
6) The runnable part of GAE is virtualized, hence, pretty much a VPS system. Of course, they offer stuff you don't get off-the-shelf on a VPS - that's the "beauty" of GAE, they decide, install and manage the infrastructure for you.
7) Was reading an article a couple of months ago, where it ended with the author asking "What is the cloud?". Not a tricky question, it's just the "cloud" is as subjective as "web 2.0", PaaS, solid infrastructure, ready-made platforms etc. Happens the article was written by one of the pioneers behind the "cloud" concept.
8) [sarcasm]Wow, didn't know THAT. How did I miss that big news![/sarcasm] I might not be a Java veteran, but having developed anything between implementing my own heavyweight components to working with JNI, pretty much gives me a relevant say on the matter. That said, I don't understand what Java (or really, any language used inside GAE) has to do with my arguments above. Could have been PHP, ruby or anything else.
Anyone hiding or denying GAE's (obvious) limitations is being quite a hypocrite on the matter.

Cloud Computing

Perhaps a bit of education about cloud computing is in order.

Unfortunately, cloud computing has a terrible name. Really, all cloud computing is, is a scalable infrastructure coupled with some type of infrastructure operating system that manages all the nuances of such a structure. It isn't any kind of magic, but rather an abstraction at the next layer up. It abstracts other parts of our infrastructure such as Firewalls, Load Balances, Networks, Servers etc.

Here is an excerpt from an article on infoworld:

"Cloud computing comes into focus only when you think about what IT always needs: a way to increase capacity or add capabilities on the fly without investing in new infrastructure, training new personnel, or licensing new software. Cloud computing encompasses any subscription-based or pay-per-use service that, in real time over the Internet, extends IT's existing capabilities."

Once people truly understand cloud computing they have a V8 moment, slap their foreheads and say "DUH"....why didn't we do this years ago.

Indeed, my "duh" moment was

Indeed, my "duh" moment was when I read about cloud computing in a white-paper. My first reaction was "well, it has to have a name, even it's been used for some time".

The reality is that what cloud computing does has been done for some time, albeit by a different name, and perhaps with a different focus. To think I was expecting a serious platform, instead what we get? A series of systems which aim to do the same thing albeit different and in an incompatible manner.

As it is, before this term got wide spread use, I've already had a project based on such an idea (dubbed Master-Client Server Visor, now ported to a real cloud system mainly to avoid having to develop it myself). Point is, it's just a hyped catch-phrase, just as we heard all about great UI in flash websites - sure flash can do some great UI, but seems a lot of devs are more than happy with some JS.

I don't see any reason to discuss anything further since this is obviously a subjective field and I can't answer to someone which believes everyone's better off with hidden load balancers (aka walled garden) than doing what they want as they want (having full power of their machine).

Abstraction is scary...

Abstraction is scary for people...They don't like not knowing what is going on under the covers. But eventually, people let go and realize abstraction is a necessary migration. I remember the days when video hardware wasn't abstracted, and we had to know what video card was installed and how to talk to it if we wanted games to work...then came abstraction, which made it so we didn't have to know about every video card ever created. People complained and cried then too, but now that is a distant memory.

Cloud computing abstraction is the think you want to know about the load balancer and firewall and all that goop, until one day you wake up and you don't have to. Then you realize...hey, I don't miss that. I can understand that if you job is based on knowing that stuff how you might feel threatened.

I'm not scared of

I'm not scared of abstraction, abstracting interfaces takes more or less 60% of my workload.

Don't know if you read my point about the cloud being old, maybe I should have emphasized my point.

All this talk about abstraction and hype words ("the cloud") simply hides reality. Truth is with abstraction there is still firewalls, balancers etc, it's just that they're not relevant to everyone.

But people that live by abstraction seem to forget this, so the next time there's no uber-cool-3rd-party-database-provider, they simply quit the whole idea of the original feature.

Next thing is ensuring what you are building in fact performs correctly. You end up relying on some abstraction layer (which was intended for complex apps) which in your case makes yours 30% slower than if you used a provider which the cloud didn't restrict you with (filesystem, database etc). Again, it's the people that sees this from the wrong angle, with reasoning as "if google runs their servers on database surely it works better than ".

Remember when dedicated severs were all the rage, and next came VPSes? Remember when everyone fantasized having flash websites with bleeding edge graphics, seamless motion and out-of-this-world effects?

Unlike you and the other person seem to be implying, "the cloud" is not the future. It's just another system, I've used it before it even existed. Big deal.
I won't be running my HTML pages on "the cloud". Period.

Seems some formatting got

Seems some formatting got removed by the html filter. I meant to argue that Google's DB system can be awfully inefficient on smaller-scale systems.

No, I don't you made a cloud.

You said you used it before it exist but that fact doest not make you a cloud provider. Why? I know cloud is just a network of computer. And network exist in many forms long ago. So what's the difference? Well, cloud is all about money. You leave the network for someone who can manage it well and economically. Why shouldn't I hire you instead? Because I am sure that it will cost much more money (well I don't have that much money). Big companies are trusted because they have experiences in managing large networks, they promise to provide cheap service (because they manage their networks all day, so they know how to manage them cheaply) and they have money. It's all about electricity cost, disaster recovery and many more things like that which a single person can not do himself. What if there is an earthquake and you servers are buried underground? Do you have a backup in Asia instead?

Everyone who cares about cloud computing will go with IBM, Google, Microsoft, Amazon...etc...Not you, don't you realize that? Hey, wake up and stop bragging about how you made a cloud before. It was not you that made the cloud. Maybe you can make a blue print of a cloud but not a cloud itself. You can sell your blueprint to a rich company and that company will make the cloud.

I didn't say I'm providing a

I didn't say I'm providing a cloud service nor that I would be using my own system (since, well, it's now defunct anyway).

The point is that the big thing you call cloud is just a hyped word. Period. And about the bragging, I simply specified a simple example.

Since you care about the cloud crap, go with IBM, Google or whatever shit there is out there. Learn a thing or two before ok? Such as that no cloud provider will protect you from having your half-assed wordpress installed "hacked".

I can't believe I'm arguing over this, seriously. Quit bringing up pointless comments, ok? As if I'm running my own server farm in my backyard!!!

SaaS, IaaS, PaaS

If you want VPS, go for IaaS. Making a cloud is different from using a cloud. If you use VPS from Amazon, it means you are using a cloud, Amazon makes the cloud. You don't make a cloud.

Oh God. Get this damn thing

Oh God. Get this damn thing in your head, ok?

The Cloud is just a FUD TERM. We had cloud in the 90s, it was called VIRTUALIZATION.
The same thing you're running today USED TO BE CALLED like that.

So back to the original point. You're siding up with java/.net because either of them can run on the cloud, ie, a technology that exists these last ten years, the same technology which any other language out there can easily support? Heck, I could run batch files "on the cloud" if I want to.

That doesn't make the term any more realistic. Seriously dude, get reading a couple of development books and quit googling for "cloud platforms"...


I have a book named "Programming Google App Engine". It is from O'Reilly. So you wanna suggest another name? I doubt your book will bring something helpful. I hope it is not an academic lecture from 90'.

And, saying that the cloud is easily hacked is not really true. It depends on the type of cloud you choose. You use VPSs, so of course everything is depend on you. That's the reason why I don't choose Infrastructure as a Service. GAE has its own sandbox with its own security policy, that's why it is limited but I will be safer with it (of course it still can be hacked but it's still safer than running my own server). I am new in this industry. I began my first step 4 years ago. I don't know what Cloud computing was called 20 years ago but I suppose it does not make any difference or give me any benefit.

Saying "I knew cloud computing long ago. Why are people so noisy about it nowadays?" is just like saying "I knew Functional Programming long ago. Why so noisy about it nowadays?". That kind of saying is just meaningless. Everything has its own time. What was your internet connection in 1990? Dial-up? Now is the time for cloud computing, not 1990.

And about .NET or Java, if you choose Platform as a Service, then you MUST care about which platform will be most useful to you (of course you don't understand that because you are running on VPS).

Buy a new book and unlearn what you learnt in the old days, man!

"And, saying that the cloud

"And, saying that the cloud is easily hacked is not really true. " - See, that is exactly what the marketeers behind the cloud wants you to believe. If someone has flawed software that is running on "the cloud", it can still hacked into. You can have as much load balancers and whatnot. That is what I said when I described .NET and Java for the web "a mess"; the issue isn't "the cloud" but the language itself.

I'm sick and tired trying to get this to you, but the cloud isn't the magical future you've been waiting for, even if the cool marketeers behind google, ibm, amazaon, etc, want to make you believe.
Think about it, they have engineers working on the cloud's infrastructure, so there IS someone (some people actually) that makes it happen. And these people are the same people which MUST KNOW how it all works.
Then there are those people that simply having the cloud doesn't give them what they want. For example, you said you don't need to use a filesystem. Granted, YOU MIGHT not actually need it, but that does not mean NO ONE DOES. So if GAE doesn't support filesystems, then it IS a restriction.
I can't for the life of me imagine myself deploying a system which can't use files.

But then again, I'm doing a huge mistake attacking this FUD crap while it's ripe. Time will prove me right, just wait and see.

This is business

This really is business. It's not true to say Microsoft stuffs are always cost-saving.

There is an edition of Java called JavaEE because it really is Enterprise, don't you think? Maybe you think .NET is the best just because you are working for banks. Not everyone is working for banks anyway.

If you follow the article on

If you follow the article on Tek Pub closely, you'll realize the reason that it was easy for them to implement Ruby for their site was because it was originally written in ASP.NET MVC. The MVC pattern allowed them to make that migration easily. Had their site been originally written in something like...GWT, it would have been exceedingly more difficult.

Languages are nice, but just as in art, you can't simply give someone a paintbrush and expect a masterpiece. Understanding good patterns and practices is essential. Ruby has some great things going for it and the community should learn from some of their patterns and practices.

There is Spring MVC

There is Spring MVC on Google App Engine. I am just a little worried because GAE use Big Table, so I will be dependent on Google. But they also promise to support SQL in future.

re: robert swift

So your idea is that system administrator that manages Windows servers are *CHEAP*. You say that Windows system administrator are commodity labour and it's difficult to find someone who knows Linux. I think you are confused between "easier to get someone who can use Windows desktop" with the WIndows Server ones. Hiring someone who knows the Windows Server, Active Directory, SharePoint and Azure; I think as *EXPENSIVE* as hiring Linux administrator counterpart.
Windows is only easy on the desktop side, not in the details of server configuration. Setting an Active Directory for the whole organization is difficult and expensive as well.

And MS Exchange is not human

And MS Exchange is not human resource intensive?

nice joke

"most of the people use windows" is your argument? :D

great point. so to make .NET REALLY platform independant, everyone should use windows xD
and the point "most people use windows" might be right, but 1. it IS a problem (monopol is always a problem), and 2. linux and mac become more popular every year. especially linux with it's user friendly distributions like ubuntu become very popular.

.NET as a crossplatform framework? nice joke. one look at wikipedia: "The Microsoft .NET Framework is a software framework for Microsoft Windows operating systems".

To get REAL platform independance, you have to use java (and by java i mean jre, not the programming language).

As a business person, I could

As a business person, I could care less about the details of your religion, be it php, java, python, or .net. The reality is I need a solution that works for the best value/cost. Personally, we just completed an exercise to determine our future platform/environment going forward and for us the clear winner was the Microsoft Windows Azure platform. There wasn't even a close second. The scalability, reliability and value as well as enterprise readiness was both shocking and revealing.

I understand this idea of cross platform compatibility matters to somebody, but as I view it, it has no true business value in our web connected universe and is about as important as railroad specifications/standards are to freeways. Get over it and move on. This is a cloud world and you better jump on board.

Will Java die? Well, COBOL is still I think Java will be as well. That said, it is time to set aside your religious fervor and start thinking about the true economics driving future platforms. Like it or not, students/interns don't set policies for my company...just because the like spinning things.

Sure, and here's the proof

London Stock Exchange suffers .NET Crash:
London Stock Exchange to abandon failed Windows platform:
London Stock Exchange migrating from .NET to Oracle/UNIX platform:

There are valid arguments

There are valid arguments there and many people will be glad when Java and with it all the problems of application development (and deployment, and maintenance, and...) will finally disappear. Unfortunately it doesn't look that way altogether, as there are still so many wrong interests at stake.

Oracle will drive the future of my smartphone?


Oracle will drive the future of my smartphone?

Please!!!! No!!!

Why fighting for .net and

Why fighting for .net and java? Let us all pray for a powerful, cross-platform, object-oriented programming lanhuage...


If you are looking for something like that, the question is: "Why object-oriented?"

Why OO? Have you ever tried

Why OO? Have you ever tried to enhance/fix someone else's code? OO enforces good practices for a networked world. Even for a the single programmer the OO concepts help isolate code so it is much easier to debug logic and semantic problems.


Have you heard of Functional Programming? Haskell for example? Functional Programming is better than OOP.

I suggest you reading the book "Functional Programming for Java Developers: Tools for Better Concurrency, Abstraction, and Agility".

Yes, I was trained in Pure

Yes, I was trained in Pure Mathematics. I am referring to Pure OO where there are no shared variables; i.e. the only way to find out the state of variable or ask to change it is to ask the Object that has that behavior to service your request. So in one sense Functional Programming is a subset of Pure OO Programming.

Shared variables is an

Shared variables is an important part of Pure OO. You cannot say that there is no share variable in pure OO. Mutable state is the nature of pure OO.

Of course, you can make a framework and do Functional Programming in Java but that's a whole different story. You can do Functional Programming in Java via a framework doesn't mean Java is Functional. Java is OO in nature. Making it functional is a pain in the ass. Haskell is different, it is Functional in nature. Try it and you will see the difference. I recommend the book "Discrete Mathematics Using a Computer". The book using Haskell to teach discrete mathematics. It may suite someone who has a background in mathematics like you.

And don't ever think that just because you can do Functional Programming in Java then FP is a subset of OO. I heard Lispers said they could do OOP in Lisp. Does it make OO a subset of FP? And how about Scala? Is Scala pure OO?

To be clear

We DO NOT say that "Java is dead", in fact we say the opposite: "Java's future in the enterprise is alive and well but limited." Limited in how new innovations will happen that the core JVM level.

Regarding language use: What language did you learn first? For me it was Logo I think, followed by BASIC. Point is they were approachable languages with immediate client side feedback. How many students learn COBOL first, even though it is arguably the most important business language of the last half-century. If there's not good client side support, why would a student (or a formal course) select a language as a primary part of its curriculum. "Building apps for mobile devices" - is probably not going to use Java (unless you count Dalvik as Java pending the outcome of the Oracle/Google suit) - don't you think mobile platforms are going to be every bit as important to comp-sci curriculum in the future as today's Wintel platforms are?

From what I've seen personally, languages like SCRATCH and ALICE are already taking over the "first language learned" place in education. Will serious comp-sci students move on to Java and C++? Sure. We didn't say that comp-sci programs would switch over in the report. But is CS-101 the first time you learn a language? My kid is 15 and he's already knows HTML, Javascript, PHP, Lua, Java (embedded) and C#. I see many of his peers learning PHP, Python and yes HTML and Javascript first - before .NET or Java. Why wouldn't kids choose languages that allow them to accomplish what they want to get done - these days that's Web sites, and mobile apps. How many folks in your IT department are classically trained comp-sci grads and how many of them have other degrees?

Regarding Java as a platform. I think it's fair to say we understand that pretty well. But say you do decide to start writing all your apps using Ruby on Rails because you can deploy it on JRuby. Are you really tied to Java as a language or platform? No, you can now swap JRuby out for a different implementation if your circumstances change or a better native Ruby compiler comes out.

I don't think we're being sensationalistic (if we were - we'd have said "Java is Dead" in the title). If you think we are too pessimistic then by all means, don't read the report, but please don't put words in our mouths that we didn't utter. We tried to be as precise as we could because of the obvious sensitivity involved.

Tell your kid that HTML(5) is

Tell your kid that HTML(5) is not a programming language...



Hmm - I thought that the L...

in HTML stood for language. When did that change? Let's not get silly here - the original post cited both HTML and JavaScript together - but I suppose that JavaScript is not a language either?

Ok - how 'bout Python then. Point is, if you can't use the language on the devices you care about (iPhones, iPads, Winphones, possibly Android phones if the Oracle suit goes badly for Google) why would you choose to learn it? Kids don't learn COBOL because they can't use it on devices they have close at hand.

Hypothetically, what might happen to Java if Microsoft took a page from Apple's playbook and didn't support Java-based apps when it introduces it's own app store in Windows 8. How might that change things?

Depends on the type of

Depends on the type of kids.

Speaking of myself, I've tinkered with Assembler, C++, Pascal, PHP, a lot of interesting stuff. Oh, and COBOL as well, if memory serves me right.

There's a difference between programming for the fun of it and "programming" to have something to boast about. Programming wasn't meant to be cool.