'Java 9, It Did Break Some Things': Oracle Bod Admits To Developers Still Clinging To Version 8 (theregister.co.uk) 251
Java has a problem -- the language and platform is evolving faster than ever, but many developers are stuck on the five-year-old Java 8. From a report: So why have developers not upgraded? Simply, Java 9 introduced major changes, including internal restructuring, new modularity (known as "Project Jigsaw"), and the removal of little-used APIs. These changes broke code, and even developers who are happy to make the necessary revisions have dependency issues. "We have problems with libraries that do not yet support the latest versions," said one QCon attendee.
"I want to explain why it was necessary," said Oracle's Ron Pressler, part of the Java platform group developing the language and lead for Project Loom. "There are billions of lines of code in Java, and Java 9, it did break some things. The reason is that Java is 20-something years old. It will probably be big and popular in another 20 years. We have to think 20 years ahead. The way the JDK was structured prior to Java 9 was just unmaintainable. We could not keep Java competitive if we had not done that change. That was an absolute necessity."
"I want to explain why it was necessary," said Oracle's Ron Pressler, part of the Java platform group developing the language and lead for Project Loom. "There are billions of lines of code in Java, and Java 9, it did break some things. The reason is that Java is 20-something years old. It will probably be big and popular in another 20 years. We have to think 20 years ahead. The way the JDK was structured prior to Java 9 was just unmaintainable. We could not keep Java competitive if we had not done that change. That was an absolute necessity."
Change the motto: (Score:3)
Java: works now, breaks later.
Re: (Score:2)
Re:Change the motto: (Score:5, Funny)
Java: write now, wrong later.
It will probably be big and popular in another 20. (Score:3)
Not if you keep this up.
Would you start with Java today? (Score:3)
Just a quick question, sorta on topic:
If you are a Java guy - would you start anew with Java today or pick something else? (Scala, Kotlin, ... Go, Python, whatever).
Que opinions below, and thanks for that.
Re:Would you start with Java today? (Score:5, Interesting)
Yes.
>would you start anew with Java today
Yes.
Java has excellent development tools. Fantastic story on refactoring of large code bases.
Java is very mature. Battle tested. Industrial Strength. Java has a history of backward compatibility better than most other languages. Especially Python 2 / 3, just to pick one example.
Java has an industrial strength managed runtime platform. First the Java (or Scala, Kotlin, etc) compiler translates your source code into JVM bytecode. That bytecode is platform neutral. When you start your program on the JVM (Java Virtual Machine), it initially runs by interpreting your bytecode. All your functions are dynamically profiled for cpu usage. The JVM watches for a CPU hotspot. That is, some function that is getting a higher than average cpu utilization.
As soon as the JVM detects a hotspot, that code is immediately dynamically compiled to native code by the C1 compiler. The C1 compiler rapidly generates un-optimized native code. That code is also scheduled by be recompiled by the C2 compiler in the near future.
Before long, the C2 compiler comes along and spends significant time compiling that code into highly optimized code. In aggressively inlines code. It is able to do optimizations that no "ahead of time" compiler (such as C) can do. This is because the C2 compiler can see the "entire" program. That is, all possible code that makes up the entire program which is running. So the C2 compiler can make changes that an ahead of time compiler cannot make. Even though different parts of the entire running system may be been written by different authors, at different periods in history. Furthermore the C2 compiler can compile into code that is SPECIFICALLY for the processor you are running on, including any processor specific extensions, like SSE2, etc. Again, something an ahead-of-time compiler (like C) cannot do and be able to run on all x86 processors. (But remember JVM bytecode runs on any JVM, even on microprocessors not yet invented today -- without recompiling your source code.)
Now imagine this. Your function calls My function. Both your and my function are dynamically compiled, and C2 optimized Your function by inlining My function into your code. Next, for some reason, My code is dynamically reloaded and updated within the running JVM. Now Your function has a stale copy of My old code. The JVM immediately switches Your code back to running Your bytecode via an interpreter. Before long, if your code is still a cpu hotspot, it will again get recompiled first by C1, and then later by C2.
Java's C2 compiler has been described as being probably one of the most sophisticated compilers there is -- even though its "source" language is JVM bytecode.
Next is Java's GC. Like Java's native compiler, Java's GC is the product of two decades of research by many researchers (due to the platform being open for many years). Java offers multiple GC choices. Each garbage collector offers multpile knobs for tuning your workload to run best. There presently is one company (Azul Systems) that makes a proprietary Java runtime with a proprietary GC that handles memory heaps of HUNDREDS of GIGABYTES. (yes, you read that correctly) And has only 10 ms GC pause times. The latest thing is Red Hat's Shenandoah GC which can handle several TERABYTES of memory with 10 ms GC pause times. Also the new ZGC that similarly handles TERABYTES of memory.
Why such big memory heaps? Because Java can run concurrently on many CPU cores (the most I've heard of is 768 cores) with lots of memory. Yes, folks, Java is used for SERIOUS workloads.
Even if you don't like Java the language, other languages compile to JVM bytecode -- and many can all interoperate with each other. The JVM (java runtime) is an industrial strength battle tested runtime for serious workloads.
Please call me when your Python or Node.js can do that.
I hope that answers your question.
Re: (Score:2)
Java, the code Mutilator [youtu.be]! It's a monster truck you can pour in your code!
Java is like refactoring your code with a lawnmower! It's like programming on a 300 foot tall pony covered in chainsaws! Java - it's got what code craves!
Re: Would you start with Java today? (Score:2)
Re: (Score:2)
We must never tolerate the intolerant.
Re: (Score:2)
A long time ago, in a galaxy far, far away . . .
CPUs were very expensive. It would take the annual salary and benefits of a good sized team of programmers to buy a CPU.
Today one developer's salary + benefits for a single month can buy a sweet box. And a very sweet box for two months worth.
Programmers are now the expensive resource. Not machines.
A Java programmer can ask for mor
Re: (Score:2)
So why should people bash Java because they work in an area where Java might not be the best choice? Obviously Java is heavily and widely used, so there must be SOME reason for that. And the fact that it tops job boards for years in a row. I'm not saying everyone has to like Java. Just quit making up crap. If it were so horrible it would not be use
Re: (Score:2)
Re: (Score:3)
Just a quick question, sorta on topic:
If you are a Java guy - would you start anew with Java today or pick something else? (Scala, Kotlin, ... Go, Python, whatever).
Que opinions below, and thanks for that.
I would pick Java again but for the GUI stuff I would do it all in JavaFX instead of Swing. Swing for me is the most annoying part of Java. Everything else is fine. I do desktop applications in Java.
Re: (Score:3)
I have not tried FX yet.
If starting something new, I would seriously consider whether it should even be a desktop app instead of a web app. Web apps have zero install and zero maintenance at the end user's workstation.
Re: (Score:2)
Re: (Score:2)
The question does not make much sense.
a) Scala and Kotlin did not exist that time
b) Scala and Kotlin run on the JVM and use the Java infrastructure
The answer would probably be Groovy, or a combination of Groovy and Scala. Scala for the internals as a superiour replacement for Java, and Groovy to glue it together and for the UI.
Kotlin has in my eyes no real advantage over Java, except cleaning up the syntax by not requiring public/private/final everywhere because the default chose by the compiler is "the rig
Re: (Score:2)
just like in real life, it pays to be multi langual.
yes, i would pick up java, the (oss) ecosystem is fantastic.
but i would also take a language on the side.
I Greatly Dislike Breaking Changes But... (Score:2)
I greatly dislike breaking changes but sometimes it is necessary. Backward compatibility do the dawn of platform time gets increasingly expensive in every way. Technical debt exists here to, languages are not immune.
I was reluctant to move to Python 3, but now I see that this had to happen. Substituting iterators for lists in the APIs was essential to make it scalable to big data. Its not just for parsing little log files anymore.
That binaries break on every release of Scala is a defect in that platform. Ye
Re: (Score:2)
I was reluctant to move to Python 3, but now I see that this had to happen. Substituting iterators for lists in the APIs was essential to make it scalable to big data. Its not just for parsing little log files anymore.
Why not simply create new APIs and deprecate the old old ones.
Re: (Score:2)
Actually, Python 2.7 supports iterators.
Java Vista (Score:2)
Re: (Score:2)
Java is now version 11, with 12 out Real Soon Now.
Java 9 did have a major, but necessary breakage. But Versions 10, 11, and 12 should not create too many problems for code that run on Java 9.
None of my Java programs, a few at least 15 years old, had any problems on on Java 9 or later!
Probably only developers that broke the rules, and used non public APIs had significant problems with Java 9.
Re: (Score:2)
The article mentions that a lot of developers have dependencies in their Java applications that have not been updated to work with Java 9. Therefore, even if you're fastidious about using standard Java APIs and avoid using deprecated classes and methods, apps with many dependencies on third-party libraries may have a higher likelihood of breaking during an upgrade.
Not Surprising Little Use of non-LTS Versions (Score:2)
The entire support life cycle for Java 9+ along with the change in licensing are just a collection of not terribly bright ideas from Oracle. There's a reason that Azul, IBM, Redhat, etc. are offering extended support for Java previous versions.
Too complex for new users (Score:5, Interesting)
Grumpy old man here, but a Java developer. Java is not, and never will be a functional language. Nonetheless, Java 8 just had to introduce lambda expressions, so that wannabes could kinda, sorta pretend that Java was functional. The main effect of lambdas, however, is to hide data types, so that weak developers don't actually know what interfaces and data types they are using.
So, doubling down on stupid, they introduce "var", so those weak developers really don't have to know what types they're using. Java will figure it out, or you can play pinball till it works.
Project Jigsaw, was it really necessary? Maybe, but I'm not entirely convinced. Certainly, the new module system is a PITA, since you now have to deal with both module-paths and class-paths, plus of course getting the permissions right.
Now, I know that Java is used for a lot of backend stuff, but JavaFX finally made Java actually really good at GUIs. Swing was a buggy mess that no one seemed to want to fix, but JavaFX got a lot of things really right. So, of course, Java 11 removed JavaFX from the core, making it a PITA precisely because of the module system introduced in Java 9.
- - - - -
Here's the important bit: Nowadays, I am a college professor, and I am faced with a problem: Students new to programming can no longer start with a current version of Java - the changes in Java 9/10/11 have made things just too complex for new users. I have rolled back to Java 8 for the moment. I have spoken with a number of other college level Java instructors, all of whom feel the same way.
The long term question will be: what language do we teach in our programming courses? It is entirely possible that we will move to a different language.
When your language is no longer being taught in schools, well, that's the beginning of the end.
Re: (Score:3)
Grumpy old man here, but a Java developer. Java is not, and never will be a functional language. Nonetheless, Java 8 just had to introduce lambda expressions, so that wannabes could kinda, sorta pretend that Java was functional. The main effect of lambdas, however, is to hide data types, so that weak developers don't actually know what interfaces and data types they are using.
So, doubling down on stupid, they introduce "var", so those weak developers really don't have to know what types they're using. Java will figure it out, or you can play pinball till it works.
I find lambda expressions infuriating. I've done Java for a long time, sticking to the original OO paradigm. Then a smart ass kid decided to refactor / rewrite a bunch of code I have to maintain and extend using lambda expressions all over the place. Probably because it's "the cool new thing" or whatever. For the first few times it felt like reading a foreign language.
Why does Java have to be "functional" and who cares? They keep on going this way, they'll make it into a C++-type mess.
Re: (Score:2)
I find lambda expressions infuriating.
Never understood this. Why would anyone intentionally give up the opportunity to compartmentalize code that for all they know might be nice to reuse later into a separate real function? Seems like the worst kind of tradeoff you could make coding any non-trivial system.
Re: (Score:2)
Q: Why use lambdas? A: You give a name to something when it has proven important enough to give a name to.
This isn't a reason it's utter gibberish.
Lambda expressions are awesome and a long overdue language feature.
That neither you nor the PP understand this means you have something new to learn. Go for it.
Lambda expressions are crack for undisciplined lazy coders.
Re: (Score:2)
What is the procedure for devising a meaningful name for those methods that have not yet "proven important enough to give a name to"?
Re: (Score:2)
Q: Why use lambdas? A: You give a name to something when it has proven important enough to give a name to.
Er, I can always give a name to something in Java. Without lambda expressions.
I'm not talking about lambda expressions in general. I'm talking about them in Java. They're fucking up the established language paradigm. If someone wants to write in a functional language, let them go write in something other than Java. There are plenty of functional programming languages out there. Leave my OO Java code alone.
Re: (Score:2)
I saw a demo the other day that leveraged many of the new features of java 11, in an updated framework, etc. So much was hidden that it was very non-intuitive on what was happening in the code. The engineer demoing this saw this as a good thing, as very few lines of code were needed to implement some impressive functionality, but any attempt to understand it would have been difficult at the surface. That is where I see things going sideways with Java.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Caveat: I haven't done Java since ~2000, when Java was at version 0.9, in the days of AWT, before Swing existed.
It's interesting that you say Java programmers hate "var" and "lambdas", whereas my experience with C#, C++, and JavaScript programmers is that they are eating it up. C# programmers prefer:
var d = new Dictionary<string, int> over the more verbose form.
They prefer a lambda over a loop:
var x = collection.Find(elem => elem.Age > 15)
What happened in Java that these things are not simply i
Re: (Score:3)
What happened in Java that these things are not simply intuitive and awesome?
My guess why he's annoyed is that "var" makes you way more dependent on IDE support. Now this is just plain redundant:
Dictionary<string, int> d = new Dictionary<string, int>
but this is not:
var d = SomeClass.foo();
What's d now? Something defined somewhere else far, far away. If you have a competent IDE you'll know almost instantly what type it is, if you still swear to random text editor you're screwed.
Lambdas are neat in that you don't need to clutter everything with a zillion helper functions. I very much prefer lambda LINQ queries for example. But if you're a maintainer and is tryin
Re: (Score:2)
var d = SomeClass.foo();
This kind of code can be extremely annoying.
I very much prefer lambda LINQ queries for example.
LINQ is quite beautiful and I wish more people knew about it. Being able to write SQL straight in the code is sweeter than sugar. People do very confusing and strange things with it, though.
Re: (Score:2)
In Java it looks more or less simply exact the same ... -> than => and thats it.
It is just grumpy idiots complaining (sorry if that includes the college professor above)
Heck when we used IntellJ with Java 7, it displayed complicated anonymous classes as text in lambda style.
Or is this something about Java culture?
Probably. Everyone who is not programming in Java is bitching about Java. And meanwhile all Java developers are so insecure that they believe: there must be something true with that bitching
Re: (Score:2)
I think var should be banned in any sane development environment, and should never have been put into Java.
I have found lambdas very useful in a couple of use cases, such as when you need to pass a function for special functionality -- far better than defining a class to hold the function.
Re: Too complex for new users (Score:2)
The problem is: you are defining a class, it's just hidden from you. Lambdas in Java look like functional programming, but it's only a syntactical illusion. Java is not functional; the closest it comes is the pale shadow you see in reflection.
Lambdas are convenient, but IMHO fundamentally evil.
Re: (Score:2)
I was making no comment wrt 'functional programming', merely that I had found lamdas useful in Java.
Re: (Score:2)
Are they taking your course "exclusively" to learn Java, or to code? Limit the Java curriculum if it's the latter.
Teach on 8. Give some bonus exercise/home-work on newer versions for the truly interested.
Then teach them some other power-house languages to compensate. There's a healthy handful.
I absolutely hated Java during my college days, yet I'm doing perfectly fine as a professional software developer. I just don't look at Java-centric jobs. If someday that's all I can get a job in, then I'll hunker down
Re: (Score:2)
Why not Delphi? It has even a free implementation, the Free Pascal Compiler and the Lazarus IDE.
The Pascal language was created precisely to teach programming... in 1972, OK, but nonetheless Delphi has vastly improved it since. And it's still evolving.
Re: (Score:2)
The main effect of lambdas, however, is to hide data types, so that weak developers don't actually know what interfaces and data types they are using.
That is nonsense. You pass lambdas as arguments to functions. And the datatype of the parameter is clearly given in the functions/methods parameter list.
So, doubling down on stupid, they introduce "var", so those weak developers really don't have to know what types they're using. That is nonsense, too. On the right side of the 'var a = ' part the type is clea
Re: (Score:2)
I do a bit of programming teaching and I can sympathize with your problem of what language to choose.
One thing that helps is having a language with a decent REPL. Python has this, and I've had some success getting people going in Python. I miss the days of LOGO where you could get 6 year olds to get the cursor to draw around the screen. JavaScript was something I considered, but I'm reluctant because of how many oddities there are in the language, e.g. let vs var, for(var x in y) vs for(var x of y), == vs
Re: (Score:2)
If you're teaching programming, use a language like Scheme. You can teach the entire syntax in 5 minutes or less. Then you can get to actually teaching programming.
A university is not a vocational school. It's not your job to teach what's popular.
Re: (Score:2)
What to teach depends on your end goal.
If you want to teach a practical language that your grads can immediately use in practice, and want it to also work with Java: teach Kotlin. The (Android) mobile space has gone this way, and Kotlin works (more or less) seamlessly with Java, so it's becoming more and more popular in the enterprise as well. I think it will eventually supplant Java as the most popular JVM language, beating out competitors like the more academic Scala.
If you want to teach a practical langu
Re: (Score:2)
Project Jigsaw, was it really necessary? Maybe, but I'm not entirely convinced.
It was not necessary, and your prior two comments were exactly correct.
Re: (Score:2)
When your language is no longer being taught in schools, well, that's the beginning of the end.
Define no longer being taught. Everything you said was right so far as Java is no longer a suitable option for Introduction to Object Oriented Programming. That doesn't mean it's no longer being taught, it means it's not longer being taught to first year students.
I just checked my old university. I learnt Java (involuntarily, I'm not a software engineer) in CS1001 which is a first year first semester subject in any computer related degree and an elective in other degrees. That course has moved to CO2001 (se
Breakage unacceptable (Score:2)
My personal view is asking the world to change their ways because you are too lazy to provide a proper mechanism for managing change is unacceptable.
The argument often peddled is of the unfalsifiable objective evidence challenged variety which asserts progress / improvement necessitates breakage or some sob story about how dealing with old crap slows down development or requires too many resources.
I don't share this view. Managing complexity is what programming is all about. Having a long term robust work
Re: (Score:2)
Re: (Score:2)
Sure, programming is all about managing complexity, and it's possible to scale up to systems which can deal with extremely complex requirements of legacy customers and very old APIs and hardware and all that. But all of those considerations come with costs attached. Costs in time, money, resources of all kinds.
This is an unfalsifiable concept. Everything costs something. I hear these arguments all the time. They don't communicate any objectively useful information.
So where are these resources going to come from and how shall they be justified?
It provides value to users.
It is easy for customers, or users, or devs to sit back and demand a quality product that meets all our needs, that's delivered on time, that's well-supported, and doesn't cost US an arm and a leg, but those are all held in tension, and in the Real World, you simply can't have all four at the same time, so prepare to make some trade-offs and compromises.
Demanding isn't the issue. Delivering is. If you can't someone else will. As technology matures and dependencies skyrocket the appetite for customers tolerating change without commensurate provision of value will continue to trend down. Find a way to deal with it or someone else will.
Oracle Marketing Dream world (Score:2)
Re: (Score:3)
It's probably worth Oracle considering that it's 20 years old because up until Oracle, it was somewhat open and didn't try to make you rewrite everything to please the new version.
But since they're Oracle, they'll blame someone else when the new version tanks.
The real problem... (Score:4, Interesting)
The real problem, and this is a problem that many newly created languages and systems have decided to happily and neglegently copy, is the fact that Java was the first language to merge it's grammar and it's libraries under a single banner.
It was an idiotic idea then, and it's an idiotic idea now. Because of this one core terrible decision, backwards compatibility is now a nightmare for literally anything that follows this ridiculous paradigm.
With C/C++, there is the core language. Because of that modularity, each can be updated independently of the other unless the core language introduces a breaking change. Which it generally doesn't, because the people overseeing C still have the ethics required to put their target audience first before their own personal convenience.
Microsoft did it the correct way (Score:2)
Rather than break the .Net Framework, they created .Net Core (which is cross platform). Both are being extended separately and in different functional directions (with a growing shared functionality referred to as .NetStandard).
Here's a nice summary of this situation:
https://stackify.com/net-core-... [stackify.com]
Further, Visual Studio Code and Community aren't Eclipse...
Java 10 (Score:2)
Even Oracle Doesn't Want You Downloading Java 9+ (Score:4, Interesting)
I'm not surprised that Java 9 and later is seeing limited traction, especially since you still have to jump through hoops to download the JRE for Java 9 or later.
If you actually go to Oracle's Java.com runtime download site [java.com], they suggest the latest version of Java 8.
Confusion = audit opportunities and fines! (Score:3)
Just switched back from JDK 11 to JDK 8 (Score:3)
I've had a lot of issues with the post-8 versions of the Oracle JDK. I'm a high school teacher and a graduate student in computer science. In classes at my university, we've been using it a lot because databases are my area of focus. Last semester we were pretty much working with relational databases, and we used Java to write web applications using Spring. This semester we are working with NoSQL databases. I spent a couple of hours last week trying to get HBase working with JDK 11, and found quickly that the message in a lot of forums is "don't bother trying, you're doomed." Since I don't really want two installations of the JDK on my machine, I reverted back to JDK 8.
At school, our gradebook application is actually written in Java. You could run it from a terminal or command prompt (I use Linux, Mac, and Windows at school) with a "javaws launchGradeBook.jnlp" command (and it really ran the same in all three environments). In Java 11, javaws isn't around anymore, so that doesn't work. There's a workaround for our gradebook, but it's still annoying because I do a lot of my grading of student work from the command line. In Linux this isn't a huge deal because OpenJDK also supplies javaws, but in Windows/Mac it's a pain.
The biggest annoyance, though, is that the java-package package (which supplies the make-jpkg command) in Debian (and Debian derivatives) still doesn't apparently work on post-8 versions. Don't get me wrong, I use OpenJDK too, but I've had some issues with it and I like to have the Oracle JDK around as a deb file I can install.
Re: (Score:2)
Oracle changed their licensing recently, you really need to look into it:
https://java.com/en/download/r... [java.com]
https://www.oracle.com/technet... [oracle.com]
Also, OpenJDK is now open source releases of the Oracle JDK except without the Oracle enterprise support.
Faster (Score:2)
the language and platform is evolving faster than ever
The point is that it would be nice if the language and platform could actually run faster.
What influences Java's popularity? (Score:2)
Think about why Java's "still around" for a minute. It probably serves a purpose or two. IMHO Java's purposes are pretty banal but valid nevertheless.
Java's main purpose lies in openness. As in you can't get strong armed by one player. The second purpose is in Java's type safety. Application programmers won't screw up badly. And so, you can setup an organization with a handful of programmers that actually know what they do and a huge load of application programmers with families, mortgages and lives.
Ja
There's a Java 9? (Score:2)
Did they expect developers to update to 9 without end users having a version 9 JRE?
Re:java is a dead language (Score:4, Informative)
I bet there's more new code being generated for Java than pretty much any other language for one simple reason, Android.
Re:java is a dead language (Score:4, Informative)
For a certain definition of 'dying' (Score:2)
https://jaxenter.com/java-slippery-slope-downward-trend-133843.html
( ^- FTFY )
If you define 'dying' as 'it's not what most of the new hip project a born with',
yes under that very strict and very precise definition, Java is dying.
A long time ago (e.g.: right about the time Java was migrated into a cross-platform thing for PDAs and feature-phone, and was still taught at the university), it was popular to use it when you wanted to build something cross-platform, an app that runs on both PC and Mac (and Linux) (think all the GUI that where written for server-mode clones of e-D
That is a crazy statement (Score:5, Insightful)
I know of no new development done on java applications
Come on, Java server development is still going strong [indeed.com]
I mean, some companies are still using Cobol, and you think Java is going anywhere?
Not to mention not all Android developers have moved to Kotlin, that is a many year process - in the meantime there is a ton of Android Java code, and even new apps being developed in Java until widespread Kotlin expertise ramps up.
"write once, run everywhere". fucking pack of lies that is.
Why? That actually worked well. In the past I worked on desktop Java apps that I could run across various systems (and still work today).
When I moved to server development, we would sometimes shift between systems like Solaris and Linux or some BSD variants, but while we may have had to tune the VM we did not change the code...
Re: (Score:2)
The write once/ run anywhere issue mainly falls short for desktop apps; if you write those, I'd probably stay away from Java widget toolkits.
Re: (Score:2)
I agree it falls short on desktop, but the original statement was that it does not work which is flat-out wrong.
It's kind of humorous that Javascript seems to be making more headway with desktop apps via Electron than Java did... despite similar ways of falling short.
It almost makes you wonder if maybe Java desktop apps should be revived.
Re: (Score:2)
Actually, the Javascript thing makes sense to me. Java is a complete, comprehensive ecosystem with legacy of over-engineering that it has taken years to extricate itself from. Javascript is just a language (which happens to have pretty good functional programming facilities).
Re: (Score:3)
I'd probably stay away from Java widget toolkits.
And why? Swing is excellent and the new JavaFX as well. And exactly do you write a Java desktop app without using a Java Widget library anyway? Some idiotic WxWindows bindings?
Re: (Score:2)
Re: (Score:3, Funny)
No one in your company doing Java? Well that settles it, shut it all down! Java is the #1 language but TheGreatefulNet doesn't use it in his company, time for all Java development to cease.
Re:java is a dead language (Score:4, Insightful)
Many large new projects are in Java at companies like Google and Amazon. Google doesn't use Python for big projects, but instead picks C++, Java, or Go.
I also have no idea how India was brought into this.
Re: (Score:2)
here's how india is relevant; they are still very 'certification based' in their culture and java is a huge part of their education. sure, they are also learning python, but everyone I run into from india does have java and seems to like it a lot. they spend a lot of time with java, but I don't see that in the US at all.
I had a python instructor say this to us, during class. the US is moving toward python and india is still 'stuck' in java. how should we glue our systems together, then? RESTful interfa
Re: (Score:2)
Re: (Score:2)
I know of no new development done on java applications or anyone in my company doing anything with java
Well if you don't know about it, it must not exist.
Re: java is a dead language (Score:4, Insightful)
Java is as fast as C for the most part and is the backbone of a significant number of applications. Python could not handle the set of problems Java has solved and continues to solve. Call me in twenty years when Python has done something other than fill in some small gap in the computing space. That is all.
Re: (Score:2)
Extraordinary claims demand extraordinary evidence.
Re: java is a dead language (Score:5, Interesting)
Extraordinary claims demand extraordinary evidence.
If you want a program to execute under a second, then write it in C, or another compiled language.
However, if the program is likely to be running a minute or more, than a well written Java program will most likely out perform a well written C program. Because in Java, the code parts that are executed intensely, will be compiled into native machine code optimized for that run time profile by the Just-in-Time Java compiler that is part of the JVM. The JIT can even in-line code that is at the end of a long pointer chain.
Big enterprise applications running on on big multi-core count computers with a terabyte of RAM can make effective use of Java for long running programs. As the JVM makes good use of the multicores and gobs of RAM.
I once ran a silly benchmark, and found that the JVM/JIT had created 2 threads to run code in the same method, because it had found that my 2 large for loops could be run in parallel.
I have programmed in over 25 languages, including COBOL, C (I actually was paid to teach C to experienced programmers one year), ARM3 assembler, and Python. Found Python had some good points, indenting eliminated brackets and no need for lots of semicolons, but I found it too gimmicky and didn’t handle multi-threading very well compared to Java.
I’ve found Java quite effective for writing short programs of less than 100 lines to explore mathematical ideas, like how many polygons can meet at a snugly at a point(see http://math.ucr.edu/home/baez/... [ucr.edu]). So Java does not need massive projects to be really useful.
Cross platform support is also good. I wrote a Java Application to find duplicated files on my Linux box, and a friend had no problems running it on his Microsoft box.
I find Java is my favourite language, though I also have things I don’t like about it. No language is perfect, and there are many considerations to be taken into account for selecting a language for development.
Re: (Score:2)
However, if the program is likely to be running a minute or more, than a well written Java program will most likely out perform a well written C program. Because in Java, the code parts that are executed intensely, will be compiled into native machine code optimized for that run time profile by the Just-in-Time Java compiler that is part of the JVM. The JIT can even in-line code that is at the end of a long pointer chain.
Where is this software? Does it exist in the real world or is this simply an abstract theory? Every Java program I've ever used has two things in common:
1. Poor performance relative to native version of substantially similar software.
2. Requires insane amounts of ram
Hell even popular Java native IDEs (e.g. Eclipse) are painfully slow to the point people with nice hardware are constantly whining about it.
For years I've been hearing these and similar claims. What I've yet to see is a real world software pr
Re: java is a dead language (Score:5, Interesting)
I program in Java professionally, and I have to say you really did a good job explaining what's good about Java in your post. The multi-threading thing in particular is a huge deal, as I haven't found another language that truly excels at multi-threaded development like Java does, at least with the same quality of life as Java provides (languages like Python and Ruby provide better development quality of life in my opinion, but without the excellent multi-threading support...or a type system, and many other things that would take a while to get into).
I also feel like recent improvements to the Java language (basically Java 7 & 8) may give it a new lease on life, though I think the long term picture for Java is pretty grim, because it's held back by historical baggage and Oracle. In particular, even if Java doesn't lose ground to newer non-JVM languages like Python, then Java will lose ground over time to Kotlin and other JVM-based languages like Scala or Groovy. These newer JVM languages simply don't have the historical baggage of Java (and if you love Java but haven't tried out Kotlin you really should).
Also, another problem for all of these JVM-based languages is that Oracle's recent licensing of the JVM is troubling. That said, it can survive this thanks to OpenJDK and other open source JVM initiatives, but we may be in for some rocky times in Java-land.
I’ve found Java quite effective for writing short programs of less than 100 lines to explore mathematical ideas, like how many polygons can meet at a snugly at a point(see http://math.ucr.edu/home/baez/... [ucr.edu]). So Java does not need massive projects to be really useful.
I recently discovered and learned Julia, and I think it's the ideal language for these kinds of math exploration problems. It combines the raw firepower of languages like C and a developer quality of life that exceeds even the best languages I've seen previously. It's very popular with the High Performance Computing crowd. It has high level features that no other popular language has, such as multiple dispatch, though it manages to be a very practical language at the same time. It also has some surprisingly nice libraries in certain areas, like their graph theory library. I think it has a very bright future ahead of it. If you haven't tried it, you really should (or if you tried it a few years ago, you should give it another spin now that it's at version 1.0).
That said, even Julia isn't perfect (yet?). Right now the biggest problem is that while it has excellent HPC support, it's still lagging behind on its multi-threading support. Basically, it currently assumes that you are fine with running your additional threads inside other processes (possibly on other machines), and Julia makes this very easy for the developer to accomplish, though it's not quite the same as having cheap in-process threads like in Java. Another issue, specific to enterprise development, is that the ecosystem is still evolving VERY rapidly, even though the language has finally settled into version 1.0, so libraries shift under your feet all the time (though fortunately, they have a top notch package management system to handle library versioning). Oh, also start up times can be pretty bad due to how compilation works (basically, you can pre-compile code, but it's easy to end up having to compile at least some of the program on startup rather than ahead of time), but there are solutions to this most of the time and it buys a lot of positives (though it can be especially annoying when a library didn't optimize their startup times).
I'm also somewhat concerned about the use of garbage collection in Julia. Some recent results make me think that automatic reference counting may be the future in this area. While this concern applies to Java as well (there's a reason Java programs are so memory hungry!), it's compounded in Julia because it complicates the bridging of C and Julia, which would otherwise be seam
Re: (Score:2)
It's been my experience as well.
People who say "java is slow" have never written any java code.
I recently needed to make a tool to process multi-GB text files. My first instinct was Python, but the performance was absolutely horrible. I then made it in C and optimized the heck out of it. I was quite happy but then, just for kicks, I wrote a Java version and I was surprised to see it outperform C by 15%!
Re: (Score:3)
P.S: Java is a good language when you learn to avoid some bad ideas like putting classes above classes where you would only need just one class (and the thing about "write once, run everywhere" works if you know what you are doing).
Re: (Score:3)
Wow, then it obviously MUST be true!
Clue: Java continues to be the top language on various jobs charts year after year. (And I don't mean JavaScript.)
Java is very widely used for enterprise web applications. (not web 'sites' but applications)
Maybe your knowledge about Java is actually limited to what you personally see.
Java is the COBOL of the 21st century. It will be around forever
Re: (Score:3)
Re: (Score:2)
Re: (Score:2)
I don't dispute that Java is entrenched, and it might stick around for a while, but it's a naive misconception to think it would ever be for the same reason as COBOL.
COBOL was entrenched too, but the primary thing that kept it hanging around was that it was not only entrenched, but also more often than not impractical to attempt to translate any old COBOL program into another modern language without simply transliterating it, and basically copying all of the undesirable COBOL paradigms into the new langu
Re: (Score:2)
That is a good point.
That said, I don't think people think most people think it through that deeply. The analogy of why Java would stick around seems to communicate (at least is intended to communicate) the idea that Java would be economically infeasible to displace with something else. That's all I meant. I didn't mean anything about COBOL. I o
Re: (Score:2)
I had no particular way to know that, since you said:
This is the particular statement I disagreed with. If you are asserting that Java will be around for a long time because it is entrenched, I can't disagree with that assessment.
I will, however, take exception that it will stick around for the same reasons as COBOL did. It is the design of COBOL and its p
Re: (Score:2)
Re: (Score:2)
J2EE Coding is still a popular method for a lot of development, compared to Python, it is more flexible and support Restful Services like a champ.
However Java after 8 is not support in J2EE, making it annoying to pick the language for new coding.
Re: (Score:2)
That was a misprint. The slogan was supposed to be: "Write once, compile errors everywhere".
Re: (Score:2)
Hmm, C# was designed by an expert language designer that looked at Java, kept the good bits and improved elements of the rest.
The main things he did wrong were allowing direct memory access, and allowing his employer to cripple the deployment environment.
Apart from that C# was a bloody good language from the outset. I'm not sure I'd say it was better than Java but Java's gone downhill substantially since then.
Re:"I want to explain why it was necessary," (Score:4, Insightful)
"It will probably be big and popular in another 20 years"
No, Oracle has pretty much fixed THAT problem, I'd say.
Re: (Score:3)
Then you're doing something wrong.
Yes: Using Java, and expecting Oracle to be a good steward when they never have been a good steward of anything.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)