17 ms·
Amen. Be it Hacker News, or the /r/java subreddit, or wherever, it feels like the bulk of Java chatter revolves around... 1. Security vulnerabilities 2. The
by StevePerkins 10y ago
Amen. Be it Hacker News, or the /r/java subreddit, or wherever, it feels like the bulk of Java chatter revolves around...
1. Security vulnerabilities
2. The Ask.com toolbar
3. Oracle abandoning Java EE
... which is extremely frustrating because...
1. Virtually all of the "security vulnerabilities" deal with the browser plugin for using applets, which hasn't been widely used in 15 years
2. The toolbar malware, while stupid beyond measure, only applies to the consumer Java installer, which nobody installs anymore due to item #1 above.
3. Java EE is legacy tech. While deeply entrenched, most of the work out there for it today consists of maintenance or migration to more service-friendly approaches like Spring or Dropwizard.
Java is certainly not perfect. It's also long in the tooth, and is associated with "the enterprise", and so it's not seen as "sexy" by young developers. But for business software, large-scale data processing, and web/REST backends, I've yet to find anything on the horizon that seriously competes with it.
Every year I get bored and go exploring a new alternative language in side projects. Every year I come back, more appreciative of what I have. Python/Ruby/Node have their beginner-friendly charms, but are limited by the lack of type checking and/or chaotic ecosystems. Golang seems really promising, but has a long way to go. C# seems like the most credible challenger for business systems, but the .NET Core ecosystem is probably still years away from being where Java was in 2005.
I don't mind discussing Java's shortcomings. But I'm tired of hearing about irrelevant shortcomings such as applets and Java EE. Because that's just a way to keep a "language war" going without having to point at a serious alternative.
- Longhanks 10y agoAnd now imagine where Java could be if the ecosystem wasn't completely fucked up by oracle. Imagine a Java with a sane, user friendly installer, an open source community supported by a big corporation, actual development, no completely insane lawsuits. Instead, developers want to abandon the JVM platform. They actively seek new platforms and create them. The damage is done.
- claystu 10y agoWhat's so hard about the JVM install? I googled for "java download" and this was my first hit: https://java.com/en/download/ https://java.com/en/download/ Went there and found a single, totally obvious button labeled "Free Java Download" that detects your browser and Operating System and makes sure you download the proper version of the JVM. How much easier could it be?
- amluto 10y agoDunno. Do you want the ask.com toolbar? How about updates that install the new version and remove the old version? Or maybe they've fixed the latter issue by now.
- claystu 10y agoWell, the oracle website does tell you how to disable the toolbar, though I agree it shouldn't be there in the first place. As for uninstalling the old version, are you saying you want the new version to automatically uninstall old versions?
- amluto 10y agoYes. A new security release should absolutely remove the old release or at least disable any ability for less-than-fully-trusted code to invoke it.
- eli 10y agoOn Windows it comes with an unrelated installed-by-default "malware" browser toolbar.
- ascagnel_ 10y agoFor one, it'd be nice if it only did what it says on the tin: install Java. There's no reason that a platform like the JRE should be installing a piece of crapware.
- vetinari 10y agoExcept for the above malware comments, what exactly does "Install Java" mean? You cannot redistribute the installer or the installed files. Except other things it means, you cannot make a docker image with java app and redistribute it. Everyone has to download their own java installer and build images themselves.
- woogy 10y agoYou don't need to imagine it, you can just look at what MS has done with .net and the community that's forming as a result. Java has such a horrendous ecosystem, it's really unacceptable.
- treehau5 10y ago> Java has such a horrendous ecosystem, it's really unacceptable. This has not been my experience at all. Java's ecosystem and vast libraries of battle tested software is unmatched on any platform.
- StevePerkins 10y ago1. I check in on .NET Core and ASP.NET Core every few months, to see if the tooling and documentation have stabilized. I just happened to check in yesterday, trying to create a "Hello World" ASP.NET Core web app. The skeleton project created by the "dotnet new" command doesn't match the "Getting Started" documentation on the ASP.NET Core website. After tinkering in frustration for an hour, I gave up. See you again in another few months. 2. What .NET open source community? I'm not aware of single significant open-source community project in that ecosystem that isn't a lagging imitation of something from the Java community (e.g. Akka.NET, MassTransit, etc). There's a lot of excitement around VS Code, and the possibilities of future stuff on .NET Core, but chatter on HN and Reddit isn't the same as actual shipped code. 3. If by "ecosystem" you mean web forums filled with college students chatting about it, then fine. But I think for most people, "ecosystem" refers to the availability of production-grade libraries and infrastructure components. Try naming one server-side niche in which Maven Centrals lags behind any other language in existence.
- dloose 10y agoYou need to explain what you mean by "ecosystem".
- KevinEldon 10y agoOracle pays very senior engineers and innovators to create a stable and still evolving ecosystem. Java is slow and steady. The JVM enables other innovators to explore and create languages radically different than Java. I am very thankful for Oracle's stewardship of Java and the JVM.
- filereaper 10y agoOn the topic of stewardship, I highly recommend this talk by Brian Goetz titled "Stewardship: the Sobering Parts" [1] Brian goes about how important compatibility is for the language, the concept not throwing customers code under the bus by bringing breaking incompatibilities. (ie Python 2 --> 3) Java has its warts and isn't "cool" but I respect their design decisions. [1] https://youtu.be/2y5Pv4yN0b0?t=1578 https://youtu.be/2y5Pv4yN0b0?t=1578
- KevinEldon 10y agoThanks for the link. I haven't watched that talk, but I will, and I was thinking of Brian when I wrote my comment. His work and he work of others on the Java team is important, serious, and hard.
- filereaper 10y agoWe'd be in a much better world if IBM or Redhat had taken over Java. That being said IBM is working on open-sourcing their core JVM technology to act as platform, not just for Java but other runtimes as well. [1] There is hope still... [1]http://www.infoworld.com/article/3014128/open-source-tools/ibms-open-source-jvm-project-could-also-speed-ruby-python.html http://www.infoworld.com/article/3014128/open-source-tools/i...
- aryamaan 10y agoWhat are actual Java's shortcomings?
- thanatropism 10y agoMostly OOP's shortcomings. c2 wiki will lead you to much discussion on how "design patterns" are a band-aid patch for the deep, deep problems with massive OOP projects.
- spriggan3 10y agoThe problem isn't OOP, OOP's fine. The problem is how Java implemented Objects in a fairly rigid way which led to all this insane boilerplate. Furthermore design patterns aren't tied to OOP. And finally design patterns =/= JEE patterns .
- thanatropism 10y agoThere are about as many definitions of OOP as there are programming languages. I'm not a software developer and have no dog in this fight. Sometimes I use Matlab's idea of OOP to factor out code by domain of representation (so simulations of agricultural yields are instances of a LandUnit object with some properties and one or two methods); never to abstract programming out the way OOP design patterns do. I'm more attracted to the Haskell style of types and type classes, as far as "abstracting progrmaming out" goes, but I don't do any programming in the large, so what the hell do I know. I just pointed to the debate between people who should know, c2 wiki is very good on the things I do know.
- huherto 10y agoMostly a problem of how people use OOP. I don't think there is a problem with the Java Language or the JVM.
- AnimalMuppet 10y agoWell, see, there are deep, deep problems with massive software projects. They don't have to be OOP. But if you don't use OOP, what are you going to use that makes things significantly better? "There is no silver bullet", as Fred Brooks said.
- ufmace 10y agoI've worked on the Microsoft stack for most of my career, and I'm curious what Java has/does that the .NET stack doesn't. Or is that more about the .NET core stuff for running on Linux-based systems?
- sigzero 10y agoThe JVM runs on just about everything. The .NET stack doesn't.
- flamedoge 10y agoDiversity through age. Only a matter of time before .NET spreads. Anything written in "first-class" language can be compiled and run with mods on turing complete systems.
- woogy 10y agoThe latest .NET version is fully cross platform.
- soundoflight 10y agoAnd runs on more platforms than Java.
- kitd 10y agoCitation needed.
- jinst8gmi 10y agoCare to name some of these platforms which Java doesn't run on which .NET supports? I'm having a hard time coming up with even a very short list.
- rafaelvasco 10y agoWell , not .NET but almost: PS4 (MonoGame/Mono) XBox One (.NET Core on the future and MonoGame/Mono) At least you can run c# code on those platforms. Java though is unlikely to ever happen.
- agmcleod 10y agoI've had a mix of maintainable and rough apps on the rails side of things. I think with a good test suite, one can really build a solid app using Java these days. As you said there's a lot more modern approaches now as well. It's something I'd like to explore maybe a bit later this year, after I do some more messing around with Rust :) Given it sounds like you use Java, what tools/stack do you use with it day to day?
- mohaine 10y ago# 3. Java EE is legacy tech. While deeply entrenched, most of the work out there for it today consists of maintenance or migration to more service-friendly approaches like Spring or Dropwizard. While I mostly agree with you, Spring _IS_ J2ee based. (i.e. Servlets/JAX-RS both part of J2ee). Sure it doesn't use EJB but I don't think anybody does (non legacy) at this point.
- specialist 10y agoJava EE is just a collection of libraries. JMS, JNDI, etc. Said mostly in humor (from long suffering): The distinction between J2EE and Spring is pretty simple. EJB is a data persistence obfuscation library, whereas Spring's DI/IoC "framework" is an exception (stack trace) obfuscation library.
- geodel 10y agoThank you. Maybe you don't know but you have given very apt description of Java land frameworks.
- mohaine 10y agoThe distinction isn't very clear. As you say J2ee is just a collection of libraries, of which Spring web services happen to use a subset of.Servlets/JAX-RS off the top of my head. Of course Spring doesn't leverage ALL of J2ee but I wouldn't except anything to use all J2ee. There is a lot there.
- pieterh_pvtl 10y agoI wouldn't say it's Java EE based, acutally. It's a superset of Java EE. It's wraps the APIs people still actually care about like JPA, Servlet, and works with JAX-RS. The rest of the Java EE APIs are pretty much irrelevant these days, as evidenced by the constant introduction of new "profiles".
- spriggan3 10y ago> Golang seems really promising, but has a long way to go. C# seems like the most credible challenger for business systems, but the .NET Core ecosystem is probably still years away from being where Java was in 2005. Go doesn't have the guts to replace Java, because of the hostile mindset of its community when it comes to writing reusable, general purpose libraries. the famous "you don't need that with Go" is something pushed by go maintainers themselves. The best bet is .NET core. Microsoft can move quite fast on a project, just look at Typescript or VSCode. And there are already hundreds of thousands of C# devs if not more. C# and F# with .Net core on linux will certainly be the future of entreprise development when the RC mess is sorted out. And MS can still make money on expensive SQLServer licenses. I don't think the latest JEE was that bad though. It tried to do away with a lot of unnecessary complexity.
- hitr 10y ago>when the RC mess is sorted out RC mess is already sorted out with RTM release, isn't it?
- deleted 10y ago[deleted]
- voidlogic 10y ago>Go doesn't have the guts to replace Java, because of the hostile mindset of its community when it comes to writing reusable, general purpose libraries. the famous "you don't need that with Go" is something pushed by go maintainers themselves. Go has a pretty comprehensive stdlib. And a huge and growing community of 3rd party libraries. I left .NET and Java for Go around 0.9 and since then I have seen Go flower into an ecosystem I am far more productive than. The Go devs have a bias against complexity, they hate Abstract Factory Factory Singletons :P, but that does have much impact on community developed libraries. The Go community does have a strong bias towards libraries and against frameworks, but IMHO, that is generally healthy. The only concrete example of what you are talking about is the current lack of generics support.
- shadowmint 10y agoI think the issue here is the hostility of the go community historically to pretty much any kind of criticism on pretty much any front. (want generics? too bad! don't like the syntax for [thing]? too bad! want a framework? you're doing it wrong! want to test without using actual sending network traffic? BAM! 50 downvotes on SO for 'poor question'. Got some feedback and post it to golang nuts? HA! Prepare to be shouted out) ...but slowly we're seeing things move to a more moderate and mature state now where people are actually solving problems (like vendoring and SetDeadline()), rather than just pretending everything is ok, and building really good things with it, like go-kit. It's just go growing up and being used seriously by people; but to be fair to the parent post, if you've used go in the past, I can see why you might have some opinions about it not being run by grown ups. Worth having another look though. These days, it's pretty good.
- dkersten 10y ago...have their beginner-friendly charms, but are limited by the lack of type checking... Haskell people probably say the exact same thing about Java ;-)
- preordained 10y agoFor sure they do. But I've spent my time with Haskell and I've seen really simple things obscured under a cacophony of type noise. It's not uncommon at all to see a piece of simple logic with proportionately 3x the amount of type syntax around it or related to it. Especially when you need to do IO or state, as we sadly need to do here on earth, then it seems like Haskell is trying to put a brick wall of type restrictions between you and a simple routine at every turn. Talking not about doing some printouts, but actually making a long-running application where IO and state is ubiquitous.
- Svenskunganka 10y agoI'm not familiar with either Java nor Golang, but I'd love to hear what you're looking at when you see shortcomings in Golang. I am genuinely curious and are very interested in what enterprises are looking at when they are browsing new tech. My mother is a COBOL programmer for one of the largest banks in the EU, and I always enjoy listening to her explaining their systems (IBM Mainframe, Batch processing, etc).
- mmargerum 10y agoNot many. The only deal breaker I've hit is the inability to return multiple result sets with the built in SQL package. I haven't missed generics that muc, but it would be nice to be able to do things like sorting without implementing a sorter interface. I can live with this though because everything I've written in go so far had been easy to reason about and most importantly it "just works". I can read anyone's code an understand what it's doing. Can't really say that's been true in the 25 years I've been doing this.
- toqueteos 10y agoI would enjoy a lot reading her stories, you should write those on a blog.
- Svenskunganka 10y agoWould be really fun and informative writing a post about her work! I'm gonna ask her tomorrow! :)
- Qantourisc 10y ago#2 is not the case: for still quite a few bank and government software in Belgium :/ Although when not needed on a PC I tend to remove it asap (Java)
- hyperpallium 10y agoEnterprises dislike unnecessary change, so they wouldn't abandon java even if there was a technically more suitable alternative - they stuck with COBOL long after C was established. They will stick with java for a LONG time, not for a good time. Yet, java was (as someone recently disparagingly put it) "designed by adults". By people familiar with state of the art language research, what was needed and workable, comprehensive specs of language and VM, and complete stdlibs, docs and tools from the get-go. (That is, disparaging to other languages) And it's also managed to keep up to date, much better than I'd ever have thought: fast JVMs, language evolution, stdlib extended - and perhaps the greatest number of 3rd party libraries of any language ever(?). Oracle is wrecking that for EE, and may wreck more.
- nix0n 10y agoCan Java EE be developed on OpenJDK? Can OpenJDK create a fork of the whole Java ecosystem when Oracle wrecks it?
- geodel 10y agoI think the fundamental issue which many people do not want to admit is that Oracle puts humongous money in Java and Java EE(in past at least). Without that all the Java activists and Java EE guardians etc are unlikely to ship large working products like new versions of Java/JavaEE.
- sievebrain 10y agoThis. Also, despite the general hatred of Oracle, something else that is hard to admit is they've managed Java a lot better than Sun has done. The people building Java now are long-term team members who clearly weren't recognised and elevated by Sun, but who have been by Oracle. Love 'em or hate 'em, Oracle didn't turn into a factory farm of cash cows by being entirely incompetent.
- acdha 10y ago> Enterprises dislike unnecessary change, so they wouldn't abandon java even if there was a technically more suitable alternative - they stuck with COBOL long after C was established This isn't a great comparison because C was, and still is, a much lower-level language than COBOL. If you're looking at that from the perspective of a large organization with millions of lines of code, it's hard to justify the claim that C is “technically more suitable”, because the things C does better are largely irrelevant to business apps while the ISO standard for COBOL includes a ton of higher-level features like an indexed database, first-class support for fixed-precision math (a hard requirement for financial apps), a form library, object orientation, etc. which would need to be maintained as library dependencies in C. Any COBOL programmer would be familiar those but each C developer would need to get used to each application's particular selection of libraries. A better comparison would something like Java or .Net which both have standard answers for most of those questions and, perhaps unsurprisingly, were quickly adopted by companies trying to move new development away from COBOL. As far back as the mid-90s, a popular approach was to move the front-end into Java (or, later, a web app) and start chipping away at the decades of backend COBOL code running on a big central server.
- bradleyjg 10y agoI wonder how difficult it would be to port C# to the jvm. It really is a better language. There are some parts of the standard library that are better in java, but overall I'd say C# is better there too.
- pron 10y agoYou could say that Kotlin has already done it.
- jpliska 10y agoCheck out kotlinlang by Jetbrains. It's git the best of java, C# and python
- dloose 10y agoOr Ceylon! It looks a lot like Java in some ways, but with a really novel type system. Kotlin is nice too though.
- huherto 10y agoCare to list what the C## language has that the Java Language doesn't? I guess, you don't miss what you don't know.
- hitr 10y agoI have worked on both languages and I have not disliked anything about java.Not here to start a flame war. I heard many times from who have extensively worked on both that supports for generics in c# is far superior than java.And obviously LINQ goodness and async\await comes to mind
- m_fayer 10y agoJust one example, the type system just does more, IMO very useful, stuff. Richer generics. Dynamic typing is there if you want it. Type inference is great, and then coupled with anonymous types allows for some nifty tool-supported functional-style pipelined programming. (RX and Linq). Upcoming language support for tuples looks pretty sweet too.
- smrtinsert 10y agoI'm exactly the same way - every language/platform I've explored has been frankly a waste of time sadly. In the meantime, Java instead has learned to scale down beautiful as well. Working in the node ecosystem lately has made me appreciate many times more, it's incredible how unproductive it is. I still find it the gold standard of language/platform combos.
- huherto 10y agoThe npm is a mess. Granted, Maven Central has the advantage of Java being statically type checked. But CPAN is awesome. And Perl is dynamic. But modules in CPAN are thoroughly unit tested when you install them. npm is neither. You find incompatibilities when you run it.
- xorcist 10y ago> the browser plugin for using applets, which hasn't been widely used in 15 years Oh, by all the possible deities, how I wish that was even remotely true...
- krylon 10y agoAmen to that!
- gosukiwi 10y ago> Python/Ruby/Node have their beginner-friendly charms, but are limited by the lack of type checking and/or chaotic ecosystems. Don't know much about Python but at least for Ruby, the ecosystem is not "chaotic", it's just way faster moving compared to something like Java, which is stale af. It's quite easy to manage Ruby projects, I think the only disadvantage to this language is it's quite slow. But does it really matter? For most use cases it's just fine. As for the lack of type checking, I think that's a poor comparison. Type checked code is not always better than dynamic code, and dynamic code it's not always better than type checked code; They are different. Maybe for an army of junior developers leaded by a 90's senior developer with a mustache and thick glasses, a boring safe language like Java is the best. For a team of experienced developers with deadlines, Rails can get the job done in a quarter of the time.
- cesarb 10y ago> 2. The toolbar malware, while stupid beyond measure, only applies to the consumer Java installer, which nobody installs anymore due to item #1 above. Here in Brazil, the program used to submit the income tax forms is written in Java (http://idg.receita.fazenda.gov.br/orientacao/tributaria/declaracoes-e-demonstrativos/dirpf/entrega-da-declaracao-do-irpf/download-programas-dirpf http://idg.receita.fazenda.gov.br/orientacao/tributaria/decl...). This means that a lot of people need Java on the desktop. I have relatives which have Java installed on their computers solely for that reason (yes, I have disabled the Java plugin on their computers).
- devcamcar 10y agoStep into the Scala/Akka light my friend :)