


Java Turns 30 (theregister.com) 28
Richard Speed writes via The Register: It was 30 years ago when the first public release of the Java programming language introduced the world to Write Once, Run Anywhere -- and showed devs something cuddlier than C and C++. Originally called "Oak," Java was designed in the early 1990s by James Gosling at Sun Microsystems. Initially aimed at digital devices, its focus soon shifted to another platform that was pretty new at the time -- the World Wide Web.
The language, which has some similarities to C and C++, usually compiles to a bytecode that can, in theory, run on any Java Virtual Machine (JVM). The intention was to allow programmers to Write Once Run Anywhere (WORA) although subtle differences in JVM implementations meant that dream didn't always play out in reality. This reporter once worked with a witty colleague who described the system as Write Once Test Everywhere, as yet another unexpected wrinkle in a JVM caused their application to behave unpredictably. However, the language soon became wildly popular, rapidly becoming the backbone of many enterprises. [...]
However, the platform's ubiquity has meant that alternatives exist to Oracle Java, and the language's popularity is undiminished by so-called "predatory licensing tactics." Over 30 years, Java has moved from an upstart new language to something enterprises have come to depend on. Yes, it may not have the shiny baubles demanded by the AI applications of today, but it continues to be the foundation for much of today's modern software development. A thriving ecosystem and a vast community of enthusiasts mean that Java remains more than relevant as it heads into its fourth decade.
The language, which has some similarities to C and C++, usually compiles to a bytecode that can, in theory, run on any Java Virtual Machine (JVM). The intention was to allow programmers to Write Once Run Anywhere (WORA) although subtle differences in JVM implementations meant that dream didn't always play out in reality. This reporter once worked with a witty colleague who described the system as Write Once Test Everywhere, as yet another unexpected wrinkle in a JVM caused their application to behave unpredictably. However, the language soon became wildly popular, rapidly becoming the backbone of many enterprises. [...]
However, the platform's ubiquity has meant that alternatives exist to Oracle Java, and the language's popularity is undiminished by so-called "predatory licensing tactics." Over 30 years, Java has moved from an upstart new language to something enterprises have come to depend on. Yes, it may not have the shiny baubles demanded by the AI applications of today, but it continues to be the foundation for much of today's modern software development. A thriving ecosystem and a vast community of enthusiasts mean that Java remains more than relevant as it heads into its fourth decade.
This Post Brought To You By Java FirstPostBot 1.1 (Score:1)
Glad I made it first! Just finished starting the VM and loading all the class libraries!
Re: (Score:2)
Write once, runs everywhere painfully (Score:3)
Python is the real no-nonsense, no headache write-once-run-everywhere.
Re:Write once, runs everywhere painfully (Score:4, Insightful)
Re: (Score:2)
I'm talking cross-platform.
A Python v2 or v3 file will usually run equally well on Windows, Linux, whatever... in the same version of the interpreter.
Python does break stuff on a regular basis and create headaches because they still don't give a very big shit about backward compatibility. But my point is, whatever works or breaks on one platform with work or break more or less the same on another.
Java on the other hand is a complete crapshoot, depending on platform, which JVM and which version you use, whet
You're quite mistaken (Score:2)
I'm talking cross-platform.
A Python v2 or v3 file will usually run equally well on Windows, Linux, whatever... in the same version of the interpreter.
Python does break stuff on a regular basis and create headaches because they still don't give a very big shit about backward compatibility. But my point is, whatever works or breaks on one platform with work or break more or less the same on another.
Java on the other hand is a complete crapshoot, depending on platform, which JVM and which version you use, whether the moon was blue the night before...
I literally had the opposite experience. I've worked with Java for 25 years...never experienced a legit cross-platform issue (unless you're counting that you can't read C:\myfile.conf on Linux. I once had an issue in JUnit where I had a bug in my unit test that was exposed on Linux, but worked on Windows...but again...that was my fuckup....and JUnit specifically told me not to do what I was doing.
My first Python experiences were it working on MacOS, but breaking on Ubuntu, then fixing it on Ubuntu and t
Re: (Score:3)
Good thing no one would ever do that.
Re: (Score:2)
What I have found is that the only sure way to know your code works on any platform is to write tests to ~100% coverage and then run said tests on the platform. See if they fail and see if you get the same level of coverage. You cannot claim 'runs on Y platform' when you do not try it yourself. Anyone who is building Python any version on new platform Y (like a new OS and CPU) and not passing the full test suite + not passing the test suites of the packages they install is just running on hope.
I maintain a
Re: Write once, runs everywhere painfully (Score:1)
Aimed where? (Score:2)
Initially aimed at digital devices, its focus soon shifted to [...]
Well, I guess in theory it's helpful to know that it wasn't originally aimed at analog computers, die presses, lawnmowers, and so forth.
Ah java! (Score:2)
Re: Ah java! (Score:1)
Productivity, right?
Re: Java sucks (Score:2)
respected...but not missed. (Score:4, Informative)
Java, and more so J2EE, just sucks the brains out.
Case in point, outside of Apache projects and JBoss (which try to implement J2EE standards as free things to avoid buying IBM's proprietary packages that implement the "standards" that IBM intentionally shoved into the standard in order to get people to buy IBM's "solutions"), who codes in Java open source anymore?
Back in the plain Java/Swing days, yeah, and I really loved being in THAT version of MVC and was really closing to writing a book for it...
but when IBM took over J2EE web dev architecture and that became the 'norm'? f' it. I had no brains left, every cell was being used to just get my work code to work.
and that didn't change, for me, or for anybody else. Outside of the Apache/JBoss services there was no open source community, no 'hacking', no...anything. because just doing the job sucked your brains out. I once had to explain, as I was leaving my prior company in 2010, that any "feature" they asked for required me, on a "full-stack", to mentally think and write in 12 different languages, once you realized that each XML configuration was really a different language from any other.
There's reasons the react, node, and general JS "stack" has so many packages and components available to it...it is because the typescript/javascript realm doesn't suck your brains out.
Yeah, it got me through 15 years of my 30 year career...but I'll never miss it.
Re: (Score:2)
At least it wasn't PHP.
And with regards to the JS "stack", the reason it has millions of packages is because the standard library (Node or ECMAScript and/or the DOM in web browsers) is small and terrible. This is a bad thing.
Re: (Score:2)
Totally agree, except I don't respect Java. I had to use it for many years, a miserable language to work with. I always felt like it was fighting me, you write code with one hand tied behind your back. I realize a lot of people love it for some reason, but that ain't me.
And these application environments like JBoss (now defunct) truly did suck. It is Node/JavaScript and Python for me now all the way.
Nonsense (Score:4, Insightful)
Yes, it may not have the shiny baubles demanded by the AI applications of today,
That is nonsense. The AI "baubles" have nothing to do with the language itself, that's all about the libraries.
In general, people don't choose languages these days because of features of the language. They choose languages because of availability of libraries.
The idealogical language (Score:3)
Java is an example of what you get when you take ideology to its ultimate conclusion. For example, requiring that a function specify which checked exceptions can be thrown, and requiring that any caller must handle those exceptions, is an example of a good practice that goes too far, resulting in code full of litter that distracts from what the code is actually trying to do.
I prefer more pragmatic languages, that "suggest" good practices, but don't necessarily force them. As counterintuitive as that may seem, I want to be in control of how well I write my code. Sometimes quick-and-dirty is just the right approach, sometimes handling every known possibility is the best approach. I don't want the language to tell me that I must always do the latter.
Re: (Score:2)
Java is painfully wordy with picky syntax. Frequently is very tedious to debug in my experience. The threading implementation is dreadful. Not event-driven without a lot of hassle, which means slow. I've been paid a lot of money to code with it but always disliked it.
Re: (Score:2)
Linters and other tools to analyze code have taken over this role. Back when Java came out the only option was baking it into the language itself, which I agree is too rigid.
It's All About Concurrency (Score:2)
Write Once Run in any cloud!!!! (Score:3)
The interesting thing about Java to me is that its main purpose when it was created is now one of its most mundane features. The fact that Java can run on every major platform is good for development, but in production it mostly just runs on Linux. The far more interesting feature for Java nowadays is the way it handles concurrency via EJBs. I'm still not aware of any platform that makes multithreaded programming as easy as Java and I don't understand why more languages haven't created concurrency frameworks with a similar level of simplicity. I realize that having a VM probably enables many of these features, but it's still possible to implement those features for other languages with a bit of extra effort.
Nope, still VERY valuable...you can compile on Ubuntu, any kernel, and your jar will run perfectly on any cloud platform. You're correct we all run Linux now, but what Linux? what processor? what cloud platform? The write once run anywhere is more valuable today than when everyone wrote code on Windows and deployed on UNIX/Linux. I didn't see it coming either, but very glad it's here and we're not having to recompile for each server environment.
Re: (Score:2)
Containers provide all of that functionality, with the only major exception being the distinction between ARM and x86_64 processors.
Thirty years young! (Score:2)
I remember when it launched (Score:2)
I was running OS/2 on a PC hoping that the promise of Write Once Run Anywhere meant we didn't all have to run Windows 98 on our PCs. I remember Lotus wrote an entire Java version of their SmartSuite that had the potential to replace Microsoft Office. Too bad Java was so dogshit slow, launching the Java Lotus Word Pro took ages, hard drive thrashing like a blender until you forgot why you clicked on it and what you wanted to write.
The promises of those slim network clients that were Java workstations just
Re: (Score:2)
If you just looked on Wikipedia for it you won't find it, but it did exist: https://www.cnet.com/tech/tech... [cnet.com]