Slashdot videos: Now with more Slashdot!

View

Discuss

Share

We've improved Slashdot's video section; now you can view our video interviews, product close-ups and site visits with all the usual Slashdot options to comment, share, etc. No more walled garden! It's a work in progress -- we hope you'll check it out (Learn more about the recent updates).

snydeq (1272828) writes Java core has stagnated, Java EE is dead, and Spring is over, but the JVM marches on. C'mon Oracle, where are the big ideas? asks Andrew C. Oliver. 'I don't think Oracle knows how to create markets. It knows how to destroy them and create a product out of them, but it somehow failed to do that with Java. I think Java will have a long, long tail, but the days are numbered for it being anything more than a runtime and a language with a huge install base. I don't see Oracle stepping up to the plate to offer the kind of leadership that is needed. It just isn't who Oracle is. Instead, Oracle will sue some more people, do some more shortsighted and self-defeating things, then quietly fade into runtime maintainer before IBM, Red Hat, et al. pick up the slack independently. That's started to happen anyhow.'

Nothing stopping the open source community from implementing a 100% compatible.NET library. Other than not giving a shit about it.

you want.NET on Linux, go ahead and port it yourself. If its so easy then you should have it done by teatime. Nobody in the FOSS community wants it to be ported, and they don;t want to use it either, so there is no expectation of such things happening.

Updating Java has long been known to break stuff. Old Cisco Pixes used Java for the web interface, and it didnt work with anything but JRE 1.4.2. EFI printing controllers rely on 1.6.0 and break with anything newer. Im sure other admins can vouch for a million widgets that break when you upgrade java.

I think that Java started to fail when it went into a split of Standard Edition and Micro Edition instead of relying on the same core for both platforms and then have a good interface between the different libraries. Of course - today the mobile devices are often powerful enough to run Java SE, but it still comes with unnecessary overhead there. The problems with diverting code started when Java 5 was released when you could improve the code considerably when it comes to being type safe through the Generics feature. However Java ME did not follow and that caused problems for developers trying to create a write once, run everywhere app.

I think that the business model that Oracle has is not working when it comes to projects like Java where there is a large codebase depending on the openness of the platform - and by cutting the strings Oracle will suddenly make Java insignificant even though it has been in decline for some while. Cutting the strings might also alienate many major companies that have a large codebase in Java today and that depends on a long term support of that language. So Oracle may sit with something that they want to turn into a fully commercial unit while at the same time they can't because it will kill the product. And a dead product means that they can't find any software developers on the market for their own software written in Java. A catch 22.

The other way around would be to make Java fully open source under some useful license, e.g. the Apache License. But I don't think that Oracle understands how to maintain control then.

He wants new features, new syntactical elements, gamechangers like generics, enums, and closures. He wants fun things to learn while sticking with the "same" language, things which will hopefully let him use even higher layers of abstraction.

Which is not in itself a bad thing. If Java doesn't add new useful features it'll get replaced by something that has them. But I'm not sure Java has a lot of room left in its complexity budget to add new stuff without becoming too confusing to stick with (assuming it hasn't already, which is debatable:) It may be best to let Java coast for a bit.

Well yeah - if they could figure out how to screw it up I wouldn't have to support it anymore. I work with a bunch of Oracle developers and I think Oracle are trying their hardest to screw up Java, but the problem is - all the universities teach Java and there are so many Java developers out there.

Oracle can't figure out how to screw over java, and we are complaining?

No. Oracle *IS* screwing over Java, and we are complaining. That's what OP was all about.

It's the same crap they did to MySQL, it's just slower. Do you really wonder why most big web hosts have switched to MariaDB? (Hint: they probably won't tell you about it either. They still advertise MySQL, which for practical purposes it still is.)

Hah, no it hasn't. Jesus. I love node, but the ecosystem is still a messy collection of immature libraries. There are some very cool frameworks and experimental bits. The node community reminds me of early-days Rails - lots of true believers reinventing the wheel in their favourite language. Spring is a well-designed and mature framework that has been getting better every year, and it isn't limited to Web applications. Java is verbose and slow to change, and it doesn't attract gee-whiz handwavy types (yay). It's always refreshing to get called into a company that needs help with a Spring application - nice clean well-separated concerns and stable libraries as opposed to the mess that production apps in PHP, Rails, or node seem to become.

Java is becoming the new COBOL. It may not get much respect with the hip young cats, but it's ubiquitous and those that know how to code well in it will always have employment.

To me, it's just a programming language and library ecosystem. There are aspects I don't like, but, providing I don't get too damned clever, I can run my code on all the major platforms, which makes it better than just about anything else out there. For portability, it remains the king.

As long as you don't want to run on iPhone or WindowsPhone, or any number of other CPUs. As long as you stick to Windows/Mac/Linux, Java is good for portability

Unless you want to write a library that can be used from several different other languages, like Cython bindings to Python, or JNI to Java, then you should use C. But if you don't want to do that, and you only have a few platforms that you care about, then Java is good for portability.

I'd like to be the first to say... huh? I'm sure Java will become a legacy language some day, but hipsters don't really define much of anything. Hipsters are against anything that's popular (because popularity by definition isn't hip), and go for the obscure things. That's why PBR became popular. It's not good, but among the younger set microbrews are very popular, so a hipster has to go for something unpopular to distinguish themselves from what's popular.

20 years ago people used to say that about C. C is dying, C is going to be replaced, etc, etc. Didn't happen. By popularity C has a lot more competition, but it's alive and well and not going away. People hate COBOL because it was a badly designed language. If anything is the new COBOL, it's PHP. I've known several PHP programmers, and many of them have switched to another language not because of a lack of jobs, but because they hate the language. I'm not old enough to have been around for the COBOL era, but I'd guess it was the same then.

The death of a language starts when developers leave it in droves for something else. I don't see that happeneing for Java. Do you?

I can write a one-liner script that will bring a Unix machine to a crunching slowdown. Stupid in, stupid out.

If your little editor / mini-IDE craps out your machine, it is poorly written. Noticeable garbage collection will only be triggered if your Old Gen memory space is too full, which means you're maintaining references in memory which you should not (circular references are fun-- in someone else' code). Also possible is that it's simply not updating the UI while running a compile script, which is defini

He didn't say it was dead. He just said it's hitting a dead end and he's right. Just like many other runtime have managed to stay alive only because large infrastructures already live off of it but these same runtimes aren't growing.

Huge troll. They got Java 7 released after Sun let it stagnate for years, they released Java 8 with major improvements the community has wanted for years, they are currently working on Java 9 and the module system, etc. Java EE and Sprign certainly are not dead. I regularly attend a local JUG and I would say the majority of people are using Java EE features such as Servlets, JPA, JAX-RS, JAX-WS, many are moving into CDI, and yes there are even a bunch of JSF users. There are Spring users too. IMO the Java community is alive and well.

With Lambda expressions in the last release, and the renewed focus on mobile - Java is awesome. For a language which forced Microsoft to up it's game with C#, and with Linux has stormed into taking over most of financial services - it's as least as alive as COBOL. Which - like Sarah Palin - cannot be killed and will not go away. Java has the Colbert of Languages. Wildly successful, despite being in a suit.

Java has been playing catch up with C# for almost ten years. Attributes, generics, and lambdas were all added to Java long after they were added to C#. Also, Microsoft made them part of the runtime, while Java only made them part of the compiler (for the most part), so the features work a lot better in C#.

The point of this article is that Oracle has been slowing down the pace of innovation to an even slower pace than Sun was at, and Sun had already lost a five year head start to Microsoft very quickly.

Large corporations often do not have the vision, flexibility, or ability to execute on these things.

They're not making technology for the sake of making better technology, they're doing it purely to monetize it and make money -- for example, Oracle's insistence on keeping that stupid ask.com toolbar in the Java installer.

Oracle doesn't need the revenue from putting shitware on computers, but they do it anyway. Something about "One Rich Asshole".

Instead of writing a good platform which people use, Oracle have just been doing the greedy asshole thing.

Which, considering how much of their stuff runs on Java, you'd think they'd have an interest in keeping the platform working and widely used.

Sun could be visionaries, but Oracle not so much apparently.

I think a lot of people expected Java to begin its decline once it was in the hands of Oracle -- who are completely incapable of being the stewards of an open standard which doesn't generate huge amounts of revenue.

Which, considering how much of their stuff runs on Java, you'd think they'd have an interest in keeping the platform working and widely used.

Why? That's an expense. Oracle bought Sun for two things: to get SPARC's highly threadded architecture to make the existing database product continue to scale, and also to get the Java patents to sue Google into cross-licensing its very large distributed database patents. They still haven't given up on the latter and the former will run out of steam in the not too d

'snydeq' isn't a member of the community, he's a paid writer. Go look at his submissions v. comments. This whole site is a sham anymore. This will be my last logged in post. Complete troll bait anymore. Have fun being cogs in a money making scheme. Like Facebook they're done making money off me.

"'snydeq' isn't a member of the community, he's a paid writer. Go look at his submissions v. comments." - Go and check what site he links to in every single one of his submissions... he fails at subtlety, that's for sure.

But the JEE framework went against some of the Java founders' quest for simplicity, and byzantine configuration-based frameworks were not brought out at dawn and shot soon enough, so they took over. And the language has some annoying verbosity and stuttering.

About the time it started getting called "Java EE" instead of "J2EE" they started stripping out most of the requirements for redundant default configurations. Some of the complexity is gratuitous, sure, but a lot is because it attempts to let developers handle more complex situations or scaling requirements (horizontal and/or vertical). I used to scoff years ago at some of the layers and knobs, until I found myself needing to use them, then I thought "these guys were smart to think of this in advance".

Java != Spring. Java != J2EE. At some point, when a language has been tweaked for, say, 20 years, do you get to the point where the addition of new language features (as opposed to libraries) should be a fairly rare thing?

Agreed. Open question as to whether that's a net positive. My point is that the pace of language modifications should slow down as a language matures and all the low-hanging fruit has been picked. It's unrealistic to expect a constant rate of change.

personally, I _love_ some of the innovations in the languages and platforms I've seen in my programming career that serve to reduce boilerplate/bloat and insert, standardize, and support useful libraries into the core language. Java will assuredly lose market share if Oracle doesn't provide good stewardship over the language and do all it can to augment the tooling, or competitors that provide a better programming experience will supplant them.

async+await seems a lot like features included in java.lang.Concurrent which has been in Java since 1.5 and as a popular third party add-on before that. Maybe they aren't language sugar in the same way level C# integrates with it, but it also means I can swap in various implementations of the provider if I found a more optimal solution for my specific problem area.

D looks intriguing, certainly superior in theory to C++ or C#, but I'm seeing nothing substantial in it so far.

For other C derivatives, there's Aspect C and related attempts at adding high-level abstraction. On the other end of the spectrum, you've Silk and UPC - efforts to make parallelism simpler, safer and usable. Again, though, how many here have even got these compilers, never mind written anything in them?

With most programming languages there are 3 sorts of programmers: There are those 9-5 programmers who examine their paycheck more closely than their code; there are those programmers who have mastered the language and can do amazing things to make it dance, and there are the hard core insiders who give talks at language specific conferences and are on steering committees.

With some languages such as assembler the bulk of the programmers are in the middle category, while with a language like PowerBuilder the vast majority were in the first category. But what I have found with almost all languages there are very very few people in the steering committee category and they can be very detached from the first category.

With Java I would hazard a guess that the absolute majority of programmers are in the 9-5 category and about the only thing they want from the next version of Java is to "Please please please" don't break their code. Beyond that their needs are simple.

So Oracle can let Java Stagnate and it will probably actually please that first group for the short term. Obviously, this can be unhealthy for the language so even that first group will lose out if the language dies as they will then have to learn a whole new language when they thought they could spend a whole career in Java.

But one thing that I have also observed in many of the mega Java based projects is that they are often 1 or more versions of Java behind. Thus even newer versions of Java are totally irrelevant unless they solved some critical existing problem in the codebase of these mega projects. The real issue is that as Java moves on it becomes more and more of an effort to upgrade a mega codebase to a newer version making it eventually impossible under that company's coding management.

So if Oracle ever did want to push forward with new Java ideas then it should also push a huge program where zillions of programmers were taught to manage a version upgrade for a large codebase and given the tools to make it as painless as possible. Remember 9-5 programmers love free trips to sunny places.

There isn't a lot of "innovation" in the stack because the stack serves it's primary purpose quite well, and is used by tens (if not hundreds) of thousands of websites to deliver business functionality.

And that is, of course, the crux of the matter: functionality. Business is not interested in jumping on the latest and greatest craze just for the sake of doing so. Business wants stability. It wants predictability. It wants reliability.

Stability, predictability and reliability could be done with Erlang, Occam, Eiffel, Smalltalk or Ada.

Business could have build "enterprise" applications with any of these. Most existed before Java or, indeed, the web. Servlets could have churned out WAIS or Gopher data for businesses. Graphics, via SGI's VRML, Apple's Postscript or the ancient GKS standard, could have given you everything that Swing delivered. Not that businesses use Swing, as a rule.

Most of what you're complaining about is in the standard library, not the core language. The standard library is semi-open, you can alter the code, rip out what you don't want. Only the core language is Java, the rest is just a programming aid.

As for what COBOL has, Admiral Hopper was running software on a non-networked sequential architecture. This is rather different from operating in a multicore SMP-architectured server farm. There is nothing complicated about parallelism, but naivety and self-blinding a

The JCP under Sun was completely broken. Java 7 was YEARS late. Under Oracle, we got Java 7 released, OpenJDK sorted out, and Java 8 released with Java 9 on its way. As a Scala developer, I don't feel like the Java world has stagnated, but then the Open Source "Community" has been proclaiming the death of Java since Java 1.5. The Open Source "Community" could learn a hell of a lot from the Java community, like how to actually have and maintain large open source libraries that work for years and years. How to build systems and platforms that mature and age and function for decades without needed to be rewritten. I'd bet there are far far more programmers developing on Java than there are for Linux as a desktop OS, and I shudder to think how a post submitted to Slashdot that declared Linux as a Desktop OS is dead would fare.

Complete nonsense. New upgrades have been carried out for COBOL, including COBOL 2002 which adds objects. There are several actively developed COBOL implementations. I think COBOL is more useful and available than its ever been.

You would be surprised how many banks, insurances and transportation companies still use COBOL. Or are running legacy COBOL applications...And your claim that it is not actively developed is plain wrong.

How often do you see Java browser applets used anyway? Not that much, because they never really took off in the first place (despite being by far the most hyped aspect of Java when it first came out in the mid-90s).

Yeah, you do see them used sometimes for banking applications, custom internal-use corporate tools and the like, but for general use Java Applets were massively outnumbered by Flash apps.

In fact, I'd say that Flash on web pages ended up almost entirely fulfilling the general-purpose embedded code role that Java Applets were originally meant- but failed- to fill.

The problem was that Java was just too heavyweight and slow for computers of the time, whereas Flash was more lightweight- having started out as little more than an interactive animation creator- its increasing capabilities better matching slowly-improving computer power.

I wouldn't say that Flash stole that market from Java, because the latter had already had a run at it (during the mid-to-late 90s) and failed to take off by the time that Flash started growing up around the turn of the millennium.

Obviously it's in decline now, but Flash had at least ten- and probably closer to fifteen- years at the top, whereas Java Applets never took off in the first place.

I still continue to see Java applets being widely used in tasks that require trusted signatures — Say, filling in the tax declarations in my country, or submitting the grades for my students. For both actions, we must use a x.509 client certificate, and for both actions, quite different entities do not trust client-side Javascript validation, Flash code, or anything like that — Only Java applets.

Yes, the hole was dug 25 years ago, the grave stone ordered 23 years ago, the undertaker paid 20 years ago. But the hole has got filled with leaves, which had a lot of time to be composted into new ground. The undertaker died two years ago. The grave stone shows signes of decay. And COBOL is happily breathing.

" for it being anything more than a runtime and a language with a huge install base." makes me confused. why the heck would it be something else? what does he want? he wants them to brand some operating system as JavaOS or what the fuck?

I think you missed the half-decade under Sun's stuardship where Java moved quite slowly between 1.2 -> 1.5. A language evolves to suit its community, and if it doesn't shove out the latest buzz word to the populace immediately, then I'm fine with it as long as they get to it eventually. Most library based tools have been out years before Sun/Oracle decided to standardize on a given set, which is 100% FINE. Let the trail blazers blaze trails and the standards follow. The aternative is building OSI model o

"runtime and a language with a huge install base" describes a future where Java just coasts. By contrast, Python, Ruby, and.Net are all runtimes and languages (several languages in the case of.Net) with a huge install base that are actively introducing new frameworks, development tools, and feature on a regular basis. I'm calling an interpreter a runtime for the purposes of this conversation.

So, what you're saying is that Oracle's stagnant "sit on it" leadership is bad for people for whom the language and runtime are the end, the product, the point of it all.

As opposed to in the real world, in which the language and runtime are just tools to get shit done, and its users want stability.

You don't have to guess which community Oracle cares about. But if you're not sure, ask yourself which community can Oracle extort support contracts out of, or can be upsold on other products.

Follow the money. How much is the JCP paying Oracle to give a rat's ass about their concerns? Innovation is a cost center to someone protecting a market share, and competing against others who are protecting a market share.

If you want novelty, go find it someplace else. The other posters comparing Java to COBOL, even if jokingly, are very nearly right. Especially if you stipulate that, at the time of COBOL's dominance, the primary implementation of COBOL was associated with IBM big iron.

And that's your historical analogue of the day: COBOL was to IBM what Java is to Oracle.

You don't have to guess which community Oracle cares about. But if you're not sure, ask yourself which community can Oracle extort support contracts out of, or can be upsold on other products.

Follow the money. How much is the JCP paying Oracle to give a rat's ass about their concerns? Innovation is a cost center to someone protecting a market share, and competing against others who are protecting a market share.

At the moment, lawyers seem to be a bigger cost center in protecting Java market share. See Oracle vs. Google, still ongoing.

He probably wants "Innovation", you know, change for the sake of change? Taking something that works and making new partly incompatible versions of it so that it does not have the taint of old and uncool.

Besides, who would want to work on a stable platform where all the major library needs have been met and vetted when one can be on the bleeding edge of something new to show off?

Besides, who would want to work on a stable platform where all the major library needs have been met and vetted when one can be on the bleeding edge of something new to show off?

It is nothing to be too concerned about, it is part of the normal life cycle.

Like happens to all languages before it, Java has slowly changed from a lean and sexy system into an overweight, middle-aged, sometimes nagging system that is not really much to look at. While it is great to have around, cooks great meals, and keeps the house clean, it is not attractive any more.

Nothing to be ashamed of.

Systems get older. Usually they get less attractive as they age and stop attracting people.

Java was once that lean and sexy system when compared to its contemporaries. I was there when C++ was lean and sexy compared to predecessors. I remember hearing stories about C being lean and sexy compared to needing to rewrite the program for every system.

Lots of new languages are popping up that are new and sexy. Dart and Go and Boo languages are all cute (and are mature enough that people don't look away and mumble 'tsk tsk'). Apple's new Swift language looks cute but is still a bit too young. While I have a lot of code in Java, I'm not married to the language and can use them as they appeal to me.

Now for my rambling "get off my lawn" story. Stop reading here if you don't want to listen to grandpa babble about his old conquests and drift into a drooling sleep.

I first started playing with C++ around 1985. It was so easy to create systems compared to the C systems I was also working on. I could modify behavior really easy with inheritance. I didn't need to specify my structure on every single function, just use the fancy new member functions that passed it automatically with the this pointer. Function names were much simpler, instead of the format NounVerbNoun they could be reduced to VerbNoun or just Verb. So much less typing. I didn't need to maintain tables of function pointers inside every object. I didn't need to follow every allocation with a series of intialization statements, but throw them into a constructor. I didn't need to search the entire code base and make hundreds of changes when adding something to a structure, I could just modify a single file. It was wonderful. But over time people kept adding new requirements and best practices; when you do this you also need to do five other things. Build times radically increased as features like templates were added (they were not there originally) and then huge swaths of code was automatically generated at runtime, or hundreds or even thousands of potential types were evaluated as potentially deduced types. It slowly changed from young and sexy to old and ugly.

I first started programming with Java back in the 1.1 days, around 1996. It was so easy compared to the C++ systems I was also working on. I could create a good looking graphical program that I could run from a web page in a matter of minutes, or hours at most. My first real project at the time was a distributed image processing tool, with back-end clients running on 12 machines and a coordinating server, and the whole project took less than a week. If I needed to build a similar tool in C++ at the time it would have taken five or ten times the effort. Being able to simply rely on java.net.* rather than trying to find a networking library, relying on java.awt.Image classes to process the work, and otherwise having everything instantly available made development very easy. I could dynamically build images and pass them over the web with a trivial amount of human effort.

Today I could still do that, but it would upset people. I would be asked things like "Why doesn't it use Maven to build it? Why don't I use more advanced image processing packages? Why are these talking directly with network libraries rather than using a comprehensive REST-based system? Why is there no comprehensive unit testing?" All the little additions have crept