[HN Gopher] Greatest Java apps
       ___________________________________________________________________
        
       Greatest Java apps
        
       Author : miked85
       Score  : 141 points
       Date   : 2020-06-29 11:57 UTC (11 hours ago)
        
 (HTM) web link (blogs.oracle.com)
 (TXT) w3m dump (blogs.oracle.com)
        
       | yashap wrote:
       | Not really "apps", but Java features prominently in the backends
       | of many major tech companies. Off the top of my head, I believe
       | it's the main server-side language at Amazon, and one of many
       | prominent server-side languages at Google, Netflix, Apple and
       | Uber.
        
         | suyash wrote:
         | What do you mean by "apps" then? Ofcourse any modern app will
         | have mix of technologies, I think it's fair to call it "app" -
         | perhaps an Enterprise Java App or Backend Java App to be exact.
        
       | zulu314 wrote:
       | I find it a little weird to mix applications and libraries in the
       | same list. But if libraries are considered, I would definitely
       | nominate Hibernate: the most powerful ORM out there accross all
       | languages, and it's been a must grab for any of my projects for
       | almost 2 decades.
        
         | Keyframe wrote:
         | I haven't been much of an ORM userm but what makes it so
         | special? Anything comparable in Javascript or Python land?
        
       | LockAndLol wrote:
       | They might not like being associated with it, but JDownloader is
       | amazing Java software. It's fast, looks good, integrates with all
       | desktop environments I've used and still works impeccably.
       | 
       | I wish Java had a solution for web+platform UIs. Webapps that
       | then run in Electron is by far the most annoying thing I've had
       | to deal with as a user.
        
       | GoblinSlayer wrote:
       | Also Azureus, featuring legendary laggy java gui.
        
       | lukashrb wrote:
       | I like to add clojure it is written in Java, so I guess it
       | counts.
       | 
       | But seriously what do you like about Java and why did you choose
       | to work with it? What problem does it solve for you? I'm curious!
       | (don't comment when you don't like it)
        
       | altcognito wrote:
       | Lucene? Android :) Tomcat? Maven?
       | 
       | The Minecraft coding community is amazing. What they get done
       | without documentation is stunning.
        
         | fieryscribe wrote:
         | AWS too. A large portion of it is written in Java
        
         | manuelabeledo wrote:
         | I guess that they wanted to go down the route of "hardly
         | controversial and highly popular" applications, that's why they
         | didn't include Maven.
         | 
         | Granted, Maven is an essential piece in the Java ecosystem, yet
         | it seems that many developers are highly opinionated about it.
        
         | RMPR wrote:
         | >Lucene?
         | 
         | It's mentioned in the Wikipedia search section.
        
         | tlarkworthy wrote:
         | It's funny how Java is not considered a good language for
         | games... yet Java managed to snag one of the most important
         | games of the decade in the end
        
           | Orphis wrote:
           | It's really not great. Doable, but not great. That's why they
           | moved to a classic C++ codebase instead on other platforms.
           | 
           | On a side note, I worked on Jpcsp, a PSP emulator in Java.
           | Great for research and doing refactoring in the code quickly,
           | not great for performance, even with a JIT. We wrote later
           | PPSSPP in C++, performance was there quite easily.
        
             | jjice wrote:
             | Great work on PPSSPP. I haven't used it in a few years, but
             | even back then the performance was great!
        
             | iamcreasy wrote:
             | > It's really not great.
             | 
             | Could you provide some more information on what it was not
             | great?
        
               | mumblemumble wrote:
               | For games, probably the worst thing about Java,
               | especially if you're still on Java 8, is the garbage
               | collector. Its pause times can be brutal. This won't be
               | noticeable for games that aren't too hard on memory, or
               | games where framerate doesn't really matter, but it was
               | definitely noticeable (and annoying) in earlier versions
               | of Minecraft.
               | 
               | On Java 11 or later, I wouldn't expect it to be nearly
               | such a big deal. At least not relative to some other
               | issues. For example, it being a reflective language means
               | that there's a fair amount of memory overhead that's
               | really only there to support features that aren't so
               | useful in games development. Also, there's a fair bit of
               | overhead, in terms of both CPU and memory churn, to
               | making calls into native libraries from Java. Nowadays,
               | neither of those is a big deal for a large swathe of
               | games, either, so I don't think one can really make a
               | blanket statement that Java is not great for games
               | development.
        
         | suyash wrote:
         | Android stole and abused Java :(
        
       | tyingq wrote:
       | I'd have to give Tomcat the #1 spot for killing off the worst
       | parts of J2EE.
        
         | dreamcompiler wrote:
         | OMG. I've set up Confluence servers and Tomcat was the most
         | nightmarish part of that experience. The idea that Tomcat was
         | an actual _improvement_ on something sends shudders up my
         | spine.
        
           | tyingq wrote:
           | You would have had to lived through a full blown J2EE app on
           | Websphere/Weblogic/JBoss to appreciate it.
        
             | ralphc wrote:
             | OMG yes. So many times all you needed was what Tomcat
             | delivered, but had to go through the convoluted and slow
             | config of WebSphere. WebLogic was better but that's damning
             | with faint praise.
        
         | kitd wrote:
         | I'd say Spring takes that crown.
        
           | tyingq wrote:
           | I still give Tomcat credit for taking Websphere and Weblogic
           | out of the way. That opened the door for Spring.
        
             | latchkey wrote:
             | JBoss took WS/WL out of the way.
             | 
             | Disclosure: I was one of the main people who got Tomcat
             | open sourced.
        
       | cletus wrote:
       | So what's funny to me is how Oracle here is bending over
       | backwards not to give Google credit for pretty much anything.
       | It's actually hilarious.
       | 
       | I laughed at Eclipse Collections. What? No mention of Guava, even
       | though it's used way more. It's practically part of Oracle's
       | copyrighted Java API.
       | 
       | but of course the most hilarious omission is, of course, Android.
       | And you can say "blah blah Dalvik VM blah blah" but... it's Java.
       | 
       | And I have to say a word about IntelliJ (and Jetbrains IDEs more
       | generally). They're the standard by which I judge every other
       | IDE. To put it another way, they're the reason every other IDE
       | makes me sad. Even VS Code.
        
         | misja111 wrote:
         | Guava was really popular 10 years ago, after that other
         | libraries have caught up, not to mention Java itself.
         | 
         | And IntelliJ was once indeed the standard but is slowly
         | becoming the new Eclipse because it's so bloated. I recently
         | tried VS Code and I was amazed how fast and lean it was, I am
         | definitely switching.
        
         | pjmlp wrote:
         | I have used Java on and off since 1998, am yet to ever touch
         | Guava.
         | 
         | Android Java is Google's J++, with its half baked Java 8
         | compatibility, and deserves the same treatment that J++ once
         | had.
        
           | suyash wrote:
           | Android Java != Java so no credit needed to be given. Though
           | Google does make Java contributions in other libraries and
           | projects which is very welcome by the community!
        
             | pjmlp wrote:
             | Their wrongdoings with Android to the Java eco-system are
             | more harmful than whatever contributions they might have
             | done.
        
       | tannhaeuser wrote:
       | In praise of Lucene, it's stated that
       | 
       | > _Wikipedia replaced the Lucene engine with Elasticsearch, a
       | distributed, REST-enabled search engine also written in Java_
       | 
       | Elasticsearch is still using Lucene as core search engine though,
       | so all that was replaced is the custom job control and wrapping
       | around Lucene (SOLR?) by the one that Elasticsearch provides I
       | guess.
        
         | elric wrote:
         | Both Solr and ElasticSearch use Lucene as their search engine.
         | Solr and ElasticSearch are basically server components wrapped
         | around the Lucene library. With a fair bit of special sauce and
         | extra features. Including, well, elasticity.
        
         | [deleted]
        
         | amaccuish wrote:
         | I gave up on lucene and solr on my dovecot server because of
         | memory usage and use https://github.com/grosjo/fts-xapian
         | instead
        
           | nicoburns wrote:
           | You may also be interested in https://github.com/tantivy-
           | search/tantivy
        
         | latchkey wrote:
         | I was the one who first requested that Doug join the ASF with
         | Lucene. The rest is history... ;-)
        
       | johnklos wrote:
       | So not impressed. Still waiting for, "write once, run anywhere"
       | to actually work.
        
         | codr7 wrote:
         | It did, once you finished debugging everywhere.
         | 
         | That aside; these days, it actually more or less works.
         | 
         | I avoid it as far as I can after having built a couple of
         | systems in the language. For all its faults, Go is still a much
         | more pleasant language to solve the same kinds of problems in.
         | 
         | But my latest project needed multi-platform printing, so I
         | cobbled together a tiny Java program using the print API that I
         | run in the background and pipe data to, and it just works.
        
         | suyash wrote:
         | all those software already have already proven that.
        
       | dxxvi wrote:
       | After reading this, I think I need to learn Eclipse Collection
       | and Micronaut.
        
       | jmartrican wrote:
       | What are the odds that a language known for its use in boring
       | enterprise software is the language used to create the most
       | popular video game in history (Minecraft). If C++ was a person it
       | would be mad/salty at this fact.
        
         | Waterluvian wrote:
         | It's a great reminder that the customer doesn't care about the
         | code. What matters is the experience and overall fidelity of
         | the product shipped.
         | 
         | The language you pick, the quality of code you write, the
         | comments and documentation, are all products (gifts) targeting
         | your future self, future peers, and employer when it comes time
         | to make changes to the software.
        
           | nonbirithm wrote:
           | > the customer doesn't care about the code
           | 
           | I'm not sure this applies as strongly in Minecraft's case
           | specifically, because of the critical importance of its
           | modding community to its wild success. Normally it wouldn't
           | matter what language you pick in terms of how popular the
           | game is going to become, except it just so happened that by
           | choosing the JVM they gave the ability to the community to
           | decompile the game and add the content they want. Maybe this
           | wasn't intended and Notch chose Java because it was what he
           | happened to know, but it's my belief that if Minecraft had
           | been written in C++ instead then Mojang would not have the
           | brand recognition it does today. Anecdotally one of my
           | friends tried the RTX version of the game which was rewritten
           | in C++, and his reaction amounted to "it's fine, but there's
           | no mods, so it's irrelevant." And that's in spite of the fact
           | that modded Minecraft is a minefield of incompatibilities
           | between years old versions and can easily consume 10
           | gigabytes of RAM and millions of extraneous CPU cycles.
           | Nobody cares, because at the end of the day modded Minecraft
           | is the only way they can get the specific experience they
           | want out of a video game, and the only reason this is
           | possible at all, even if it will never be performant, is the
           | JVM.
           | 
           | But that's only because Minecraft is one of the most popular
           | video games in history, and not the kind of thing that a
           | developers for a game nowhere near as successful would worry
           | about before gaining a sizeable audience. What good is a
           | modding system if not many people want to use it? And
           | depending on the game a mod system might not be as warranted,
           | so in those cases the choice of language doesn't matter as
           | much.
        
             | [deleted]
        
             | haecceity wrote:
             | C++ minecraft should have an SDK for mods
        
             | nineteen999 wrote:
             | > it just so happened that by choosing the JVM they gave
             | the ability to the community to decompile the game and add
             | the content they want
             | 
             | That wasn't their intention; Minecraft code was originally
             | obfuscated specifically in order to combat reverse
             | engineering and modification.
             | 
             | https://www.reddit.com/r/Minecraft/comments/mpslv/why_are_m
             | i...
             | 
             | https://minecraft.gamepedia.com/Obfuscation_map
        
         | nineteen999 wrote:
         | > If C++ was a person it would be mad/salty at this fact.
         | 
         | Are you serious? Wake us up when somebody implements something
         | as complex and performant as UE4 in Java. Or even UE3 for that
         | matter.
        
         | the_af wrote:
         | And yet people here on HN have told me in recent threads, when
         | discussing Java, that:
         | 
         | - Java is not suitable for enterprise software (yes! Some
         | people here actually believe that).
         | 
         | - Java is not a good general purpose language (but Minecraft
         | was written in Java. Or even better, the list of very varied
         | apps from this article shows it's indeed a good general purpose
         | language).
         | 
         | What these people actually mean is "I don't like Java". Because
         | Java hasn't been "hip" for years, this makes people claim all
         | sorts of absurd things about it. Things that directly
         | contradict known history.
        
           | mumblemumble wrote:
           | I work in Java every day, and I agree it's been a huge
           | success. But I also don't think it's a good general purpose
           | language. It's absolutely full of warts and gotchas and
           | ergonomic problems and questionable design decisions that
           | even the people who made them have come to regret.
           | 
           | But known history tells us that there is very little
           | correlation between a language's success and how well-
           | designed it is. Outside of software, too - I think the
           | archetype for this phenomenon is probably VHS and Betamax.
        
             | the_af wrote:
             | > _It 's absolutely full of warts and gotchas and ergonomic
             | problems and questionable design decisions that even the
             | people who made them have come to regret._
             | 
             | And which general purpose language isn't?
        
             | apta wrote:
             | > questionable design decisions that even the people who
             | made them have come to regret.
             | 
             | Such as?
        
               | gschrader wrote:
               | Serialization is one of them http://cr.openjdk.java.net/~
               | briangoetz/amber/serialization.h...
        
               | mumblemumble wrote:
               | I think the most interesting one to me was an interview
               | with Joshua Bloch in the book _Coders at Work_. It was to
               | do with generics, of course, but distinct from the usual
               | surface-level debate over type erasure. He felt that
               | generics were rushed, and that they could have done a
               | better job of sorting out the details of how things were
               | going to work at the language level if they had given
               | themselves more time.
        
               | chopin wrote:
               | Wild mixes of consumer and provider API's for example in
               | Swing. The later designs have been much better in that
               | regard.
               | 
               | The built-in http client library is borderline horrible.
        
           | csharptwdec19 wrote:
           | As someone who's not a big fan of Java, I don't get those
           | arguments.
           | 
           | If anything my argument for Java would be that it tries to be
           | good at -everything-, and because that attempt started from
           | day one (versus, say, C# starting primarily on desktop, then
           | Web, and worrying about smaller targets and big servers
           | later).
           | 
           | And I think it's pretty good at all of that from a
           | 'capability' standpoint.
           | 
           | But because it tries to be all things for all people, it's
           | pretty easy to wind up down rabbit holes of large frameworks.
           | And that leads to the warts Java has from a usability
           | standpoint.
        
           | bzb3 wrote:
           | The performance of the Java version of Minecraft is so
           | terrible that the entire game had to be rewritten to be
           | played on consoles.
           | 
           | Minecraft was not popular because of Java, Minecraft was
           | popular despite Java.
        
             | pjmlp wrote:
             | The game had to be rewritten because Microsoft is a C++
             | shop and game consoles SDKs don't support Java, and it was
             | definitely easier to port the game to C++ than to create
             | Java AOT compilers for game consoles.
        
             | wing-_-nuts wrote:
             | I strongly disagree. A big part of minecraft's popularity
             | is due to it's mods scene, and it's mod scene is so
             | successful because modders could decompile minecraft's
             | classes and build a deep understanding of how minecraft
             | works under the hood.
        
             | the_af wrote:
             | That's highly debatable, not a point of fact.
             | 
             | And the rest of the apps from the article? Are they also
             | successful "despite Java"? At which point are you willing
             | to admit that maybe Java was suitable for general purpose
             | programming? Which amount of evidence would convince you?
        
               | bzb3 wrote:
               | What's debatable, that the Java version of Minecraft had
               | terrible performance or that the console ports are not
               | written in Java?
               | 
               | About your other question: I only mentioned Minecraft.
        
           | jrsj wrote:
           | I would say its suitable, but I wouldn't say it's a good
           | general purpose language for a variety of reasons. The first
           | being that "good" is totally subjective. It feels like it has
           | lagged behind its competitors both in terms of language
           | features and API design. Its generally crappy for GUI apps.
           | It doesn't really excel at anything in particular unless
           | you're already invested in it. Even it's original premise of
           | "write once run anywhere" is mostly irrelevant now, and there
           | doesnt seem to be a future for client side Java apps outside
           | of Android.
           | 
           | Overall I'd prefer to use just about anything else in pretty
           | much any domain where Java would be a consideration. It may
           | not be an inherent problem with the language itself, but its
           | ecosystem in my experience leaves it as one of the worst
           | general purpose languages in terms of productivity while not
           | offering a sufficient advantage to make up for that.
           | 
           | All that being said, Java is still _good enough_ most of the
           | time.
        
         | akhilcacharya wrote:
         | Of course, all of the new advancements have come in the
         | Microsoft-built C++ version that runs an order of magnitude
         | better (including like ray tracing and VR)
        
           | pjmlp wrote:
           | Although C++ allows for better code optimizations, it isn't
           | as if the team that took over later Java versions was doing
           | anything great.
           | 
           | Using classes to represent points and vertices instead of
           | arrays, and allocating in hot paths, really?
        
         | [deleted]
        
         | guardian5x wrote:
         | Yea probably, I doubt that Minecraft would've been any less
         | succesful written in C++ or any other language though.
        
           | akavi wrote:
           | I've heard that the relative ease of decompiling Java might
           | have contributed significantly, since it made mods much
           | easier than they would've been with C/C++.
        
             | hoseja wrote:
             | Yeah, the game is almost source-available, thus almost
             | infinitely moddable. Games that provide neat modding APIs
             | (thinking Factorio, Rimworld) are, while commendable,
             | inherently limited. If Minecraft were C++ you'd have to be
             | able to recompile it yourself for equivalent moddability.
        
               | 7786655 wrote:
               | Minecraft isn't source available, it's just that people
               | in the community have put a ton of effort into
               | decompiling and deobfuscating it. Granted, this probably
               | wouldn't have been possible if it were written in C++.
               | 
               | (At least, this was how it was pre-Microsoft. I haven't
               | followed it since then.)
        
               | blackrock wrote:
               | Could Minecraft have succeeded if it had a sub-level
               | scripting language, like Lisp? The way that AutoCad uses
               | it for its sub programming. Or the way Emacs uses Lisp
               | for macro programming.
               | 
               | Or did it need the full Java source code to re-mod the
               | program?
        
             | Eldt wrote:
             | I'm confident the community driven modding contributed to
             | Minecraft's success in a massive way.
        
           | the_af wrote:
           | Depends. Success measured how? For the end user -- the
           | players, that is -- it would likely make little difference.
           | For the developer, it's very different. A game that doesn't
           | get made at all is infinitely less successful than one that
           | exists.
        
         | nyc640 wrote:
         | > most popular video game in history
         | 
         | * citation needed
         | 
         | The most popular game by player count is CrossFire [1]. All I
         | see is that Minecraft has the highest unit sales for a video
         | game across all platforms, but Minecraft for consoles and
         | mobile (which make up a majority of sales [2]) are written in
         | C++.
         | 
         | I would argue that Java would have been a limiting factor for
         | Minecraft reaching its current levels of success given the fact
         | that the PC gaming market is relatively small compared to the
         | console and mobile gaming markets, and it would've been nearly
         | impossible to port the Java edition to so many different
         | platforms.
         | 
         | [1] https://en.wikipedia.org/wiki/List_of_most-
         | played_video_game...
         | 
         | [2] https://minecraft.gamepedia.com/Bedrock_Edition#Sales
        
           | pjmlp wrote:
           | And to this day people keep complaining about the modding
           | capabilities of Bedrock.
        
         | pjmlp wrote:
         | The proven example that instead of spending endless hours
         | discussing what languages are good for creating games, one
         | should focus in creating them in first place.
         | 
         | Incidentally C++ also had to fight against Assembly, C and
         | Pascal for adoption among game developers, and the Playstation
         | SDK was one of the contributors to change this.
        
         | rH61W3epxeHMjg4 wrote:
         | The concurrently developed Minecraft Bedrock edition is written
         | in c++. That is code base for Widnows 10 Edition, Pocket
         | Edition, and current console versions of the game.
        
         | geodel wrote:
         | Well that assumes lot of boring enterprise software is not
         | written in C++.
        
           | suyash wrote:
           | TensorFlow is written on top of C++, how boring is that, I
           | think it's one of the coolest tech.
        
         | mumblemumble wrote:
         | I'm pretty sure the most popular video game in history was
         | implemented in TTL.
         | 
         | (Though Java versions certainly exist, too.)
         | 
         | It's also worth noting that Minecraft was _originally_
         | implemented in Java, but, in order to get it running on
         | consoles and mobile, they had to port it to C++. Which doesn 't
         | discount how much Java contributed to its early success. (Most
         | importantly, I'm guessing, by making it even feasible in the
         | first place for a single person to implement it in so little
         | time.) But still, the big picture version of the Minecraft
         | story does more to support than challenge the main reason why
         | C++ is considered the language of choice for games development.
         | Because, yes, Java got it off the ground, but it was only a
         | couple years later that they had to port it to C++ in order to
         | access a mass market.
        
           | andonisus wrote:
           | The Java version is still very popular due to its support for
           | mods.
        
             | mumblemumble wrote:
             | It absolutely is, and it's my preferred version. But I
             | think I remember seeing somewhere that the vast majority of
             | unit sales were of versions that were written in C++. My
             | guess is that, if it had stayed Java only, it would have
             | still been extremely popular, especially by indie game
             | standards, but would not have become quite such a global
             | phenomenon.
        
               | itronitron wrote:
               | The C++ versions may drive new sales on additional
               | consoles but measured by hours played I would expect that
               | the Java version of Minecraft still dominates.
        
           | blackrock wrote:
           | What graphical library did he use to implement Minecraft? Or
           | did he roll his own?
        
             | ertucetin wrote:
             | He used lwjgl library
        
           | fulafel wrote:
           | What's the game implemented in TTL?
        
             | mumblemumble wrote:
             | Pong
        
       | rayalez wrote:
       | I'm planning to get a Masters degree in CS, and it bothers me
       | that the program I chose uses Java as the primary language. They
       | have an awesome theoretical curriculum, but it looks like I'll
       | have to use Java to complete all the practical tasks.
       | 
       | I'm a Node/React web developer, I want to build a SaaS startup,
       | and I'm not really interested in writing Java apps, I doubt I'll
       | ever want to use it for something.
       | 
       | Do you guys know if Java would be really painful to learn? It's
       | hard to get motivated about learning a thing I'll probably never
       | use in practice.
        
         | nayuki wrote:
         | Java will at least help you understand stuff like static typing
         | in TypeScript and classes in ECMAScript 6. In any case, skills
         | are readily transferable across programming languages.
        
         | djbeadle wrote:
         | I graduated undergrad two years ago, the majority of my CS
         | classes were taught in Java. I now work in full stack web dev
         | (Python, Django, React) and tinker with embedded electronics on
         | the side.
         | 
         | Java was picked because (for the most part) it just works on
         | everybody's machines, it comes by default with a large set of
         | libraries, and it can build standalone executables (great for
         | grading purposes). You don't have to explain why MacOS comes
         | with Python, but you shouldn't use that version of Python. Java
         | of course has its peculiarities, but so does every other
         | language.
         | 
         | And as you say, you won't just be learning Java, you will be
         | learning how to develop software. Over time and with exposure
         | to multiple languages you will find switching between them is
         | possible. You may (will) have preferences but with a solid
         | foundation you can say "I recognize that this is a loop over an
         | array, I don't remember the exact syntax in this language, but
         | I know how to look it up".
         | 
         | I'm not sure what your situation is for a masters, but for the
         | best odds of job searching post-undergrad the best advice I
         | could give is have several projects which you can talk about
         | the implementation specifics (why did you choose this pattern)
         | and the big picture (why did you choose this architecture). For
         | an entry level positions the exact language didn't matter when
         | job searching as long as it was in the ball park.
         | 
         | TL;DR You're going to school to learn computer science and to
         | illustrate those concepts they're going to use Java. That
         | knowledge WILL be transferable to other languages. For maximum
         | value explore and tinker with other languages on the side.
         | 
         | And as a bonus, a lot more of the world runs on Java than you
         | think so it will be valuable to have on your resume.
        
         | abledon wrote:
         | grind some leetocde questions in Java. after a while it made me
         | appreciate the explicit Type declarations and interfaces. Like,
         | you begin to wonder, do you want to use a HashMap<> or
         | TreeMap<> as your map implementation. Or a LinkedList or
         | ArrayList as your implementation of List etc... I find
         | languages that are more dynamic like js/python dont make the
         | user think as much about this (which is great in some cases,
         | but if your doing academic CS stuff... kind of helps in some
         | sense)
        
         | jswny wrote:
         | It's not likely that any university is going to teach masters
         | classes in JavaScript, that's for sure. So you'd have to use a
         | different language than JS anyway. Advanced topics you would
         | learn like ML, computer vision, distributed systems, big data
         | stuff all already have their languages that you have to use
         | anyway and not many (if any) are JS.
         | 
         | Also, if you are going to be a React web developer, the
         | theoretical/advanced stuff they teach you in an MS program is
         | likely not going to be relevant at all to your actual career.
         | 
         | Source: current MS CS student.
        
         | tashoecraft wrote:
         | Java is used everywhere, why do you think you'll never use it?
        
         | mywittyname wrote:
         | I hate Java for lots of reason, but it does do a few things
         | really well, one of which is that it is easy to learn. Most of
         | the core libraries are very consistently designed, so you don't
         | need to hunt around documentation to find something. Instead
         | you type import java.util. and look at the autocomplete list
         | for the collection you want. Most of the standard libraries
         | implement the same interface, so using them is almost always
         | the same.
         | 
         | I haven't used Java in years, but I'm very certain I could pick
         | it up again immediately with nothing more than an IDE. Contrast
         | that with python, which I use almost every day and I still need
         | to visit stack overflow to perform rudimentary tasks because
         | libraries for it are a mess.
        
         | nwsm wrote:
         | Java is a common university language, and an even more common
         | industry language. I think gaining knowledge of the Java
         | ecosystem and Java architectural patterns will only be
         | beneficial to you in your professional career. Hopefully you'll
         | find places you see advantages in Java, and places you see
         | advantages with Node. This will help you make better decisions
         | when building production apps.
        
         | patorjk wrote:
         | I do contracting work and mostly focus on Node/React, yet I
         | still encounter Java all of the time. Especially Java with the
         | Spring framework. With how entrenched Java seems to be, it's
         | probably something you will come across from time to time
         | (especially in the web development world - at least from my
         | experience). Also, I find that JavaScript devs have an easier
         | time learning Java than Java devs have learning JavaScript.
        
         | rando231 wrote:
         | You will probably learn many languages in your career. Most of
         | the understanding you'll gain will apply across languages, so I
         | wouldn't worry about it being a waste of time.
         | 
         | Learning Java should force you to understand object oriented
         | design, as it is hard to do anything well in Java without it
         | (though some try). While there are signs that OO's domination
         | is nearing an end, there are reams of code out there that
         | require a good understanding of it.
        
       | jordache wrote:
       | No mention of Android? lol butt hurt
        
         | granshaw wrote:
         | Ummm, its an Oracle site :)
        
         | capableweb wrote:
         | I guess it's because Android is not mainly consisting of Java
         | code, unlike for example Minecraft. Correct me if I'm wrong,
         | but isn't Android made with mostly C and C++?
        
           | jcfrei wrote:
           | Kernel (Linux) and android runtime (previously dalvik vm)
           | plus some native libraries are C(++). The rest of the stack
           | running in the user space is Java though (with support for
           | native code).
        
             | zamalek wrote:
             | They are slowly moving to Dart, but the lions share is
             | still Java. My guess is that they are trying to get away
             | from the reach of Oracle lawyers.
        
               | pjmlp wrote:
               | Tell that to the Android team busy replicating Flutter in
               | Kotlin.
        
               | zamalek wrote:
               | Pardon my faux pax. The point was that the move is away
               | from Java, whether Dart or Kotlin.
        
               | pjmlp wrote:
               | Waiting for them to rewrite Android Studio in Kotlin and
               | the complete Android infrastructure that depends on
               | OpenJDK for the emulator and AOSP builds.
        
               | randompwd wrote:
               | https://www.jetbrains.org/intellij/sdk/docs/intro/intelli
               | j_p...
               | 
               | > The IntelliJ Platform is a JVM application, written
               | mostly in Java and Kotlin
               | 
               | Pretty sure Kotlin was birthed to address issues they ran
               | into while developing IntelliJ
               | 
               | Android Studio is built on Intellij.
        
               | pjmlp wrote:
               | Still depends on JVM and Java, if Kotlin is so good they
               | can certainly reboot their eco-system using
               | Kotlin/Native.
        
       | ce4 wrote:
       | The list generates some mixed feelings - #16 for example, where
       | the inventor/maintainer got driven away by Oracle's acquisition
       | of Sun and forked Jenkins from Hudson.
        
         | jillesvangurp wrote:
         | It's obviously and understandably a bit biased. There are a few
         | omissions:
         | 
         | No mention of anything mobile even though there are a few
         | billion phones out there running Android with a huge app
         | ecosystem of Java and Kotlin based stuff. Of course, that's a
         | non Oracle flavor of Java as Sun sort of lost the plot on the
         | J2ME front (another omission). J2ME was of course more
         | successful than applets ever were until Android happened.
         | 
         | Listing Eclipse and Netbeans (1 bullet) before Intellij
         | (arguably more popular than those two combined) is also a bit
         | weird. In any case, Intellij has largely switched to Kotlin,
         | which is of course a language Jetbrains, the creator of that
         | IDE helped create to replace Java. So nice that they still get
         | a mention. But really, that whole ecosystem is now powered by
         | Kotlin more than Java.
         | 
         | Spring/Spring-boot is another painful one for Oracle because it
         | largely sidelined J2EE related products and standardization.
         | Tomcat and Jetty sort of survive as low level components you
         | can optionally use to run that. The Spring ecosystem is
         | shifting to Kotlin rapidly as well. As is Android, of course.
         | 
         | So, it's understandable why Oracle prefers to not talk about
         | those because these are all examples of where Java was
         | successful but Oracle/Sun wasn't.
        
           | Yhippa wrote:
           | > Spring/Spring-boot is another painful one for Oracle
           | because it largely sidelined J2EE related products and
           | standardization.
           | 
           | I'm thankful for J2EE and things like EJB 2. It's complexity
           | gave rise to Spring and it's amazing ecosystem of frameworks
           | and tooling that we have today.
        
           | pjmlp wrote:
           | I look forward to JetBrains replacing the JVM and its
           | standard library, and GraalVM in the process, given that
           | Kotlin is so good.
        
         | donmcronald wrote:
         | I gave up on Java when Oracle prematurely rolled JavaFX into
         | the JDK and got rid of the dedicated bug tracker. I was using
         | JavaFX a lot and frequently ran into bugs. I didn't mind the
         | bugs because I thought the tech had a ton of potential, the
         | JavaFX developers were really good, and it was easy to get
         | things fixed.
         | 
         | However, as soon as they rolled JavaFX into the JDK I knew it
         | would be a nightmare for me. Without author status in JBS
         | you're relegated to being a second class citizen who has to
         | submit bugs though the poor door (bugs.java.com) and JavaFX
         | fixes couldn't be pushed out as quickly because of being tied
         | to the JDK.
         | 
         | That was after years of broken promises about mobile which
         | didn't help. They were also claiming to make massive
         | investments in JavaFX, but if you HG churned the repo there
         | were only a few developers doing all the work.
         | 
         | It's too bad because I really liked JavaFX. It was nice to
         | develop with and I'm convinced that Oracle's mismanagement is
         | the primary reason it wasn't more successful.
        
           | gschrader wrote:
           | Do you now realize that it's been split out of the JDK again?
           | https://github.com/openjdk/jfx
        
       | maltelandwehr wrote:
       | Today I learned that almost every IDE I have ever used is written
       | in Java.
        
       | fnord77 wrote:
       | Jenkins is a cancer.
        
       | captn3m0 wrote:
       | >Some credit Minecraft's early success to the fact that players
       | could play in a web browser via Java applets rather than having
       | to download and install the game.
       | 
       | I never knew this was possible
        
         | tangent128 wrote:
         | It was possible with the early, finite-world-creative-only
         | "Minecraft Classic", but as long as I remember (I started
         | playing mid-Alpha, a few months before the Nether was added)
         | the game was played through the launcher.
        
       | renw0rp wrote:
       | Wasn't Google docs written using GWT?
        
         | cromwellian wrote:
         | Originally no, but it was written with Closure Compiler which
         | is a Java app.
         | 
         | These days Google Docs, Gmail, Spreadsheets, Hangouts, etc are
         | hybrid apps that contain a core written in Java and was
         | transpiled with GWT but now use J2CL.
        
       | cageface wrote:
       | I'd nominate Bitwig for this. The UI is written in Java and is
       | one of the nicest DAW interfaces around. The stuff they've been
       | doing in the modular grid lately is particularly impressive. The
       | fact that it's in Java means it works great on Linux too.
       | 
       | https://www.bitwig.com/en/home.html
        
         | specialist wrote:
         | Nice.
         | 
         | I nominate Spline, best in class skeletal 2D animator.
         | 
         | http://esotericsoftware.com
        
         | pjmlp wrote:
         | Definitely, thanks for sharing.
        
         | jmartrican wrote:
         | Does it use JavaFx for its UI? If not do you know what
         | library/framework they use?
        
           | callmeal wrote:
           | I could be wrong, but at first glance, it looks like
           | Eclipse's SWT.
        
             | JonathonW wrote:
             | Looks like JavaFX or Swing to me-- SWT doesn't really do
             | themed widgets (everything looks like the platform's native
             | controls).
        
         | suyash wrote:
         | wow, didn't know that, looks like awesome use of JavaFX!
        
       | throwaway889900 wrote:
       | No mention of Runescape, Classic, 2, and OSRS? I suppose
       | "applets" covers it but I think it needs its own mention.
        
         | shpongled wrote:
         | That is exactly what comes to mind for me when I think of "Java
         | games". Absolute classics
        
       | flybyair2048 wrote:
       | It's great to see our team's tool, Deep Space Trajectory
       | Explorer, come in at #2! DSTE is a custom software tool that's
       | being used by NASA Johnson Space Center to design/visualize
       | complex orbits for upcoming missions to send astronauts to the
       | Moon in 2024+!
        
       | the_arun wrote:
       | To this list we could also add Cassandra, ANTLR, Spring
       | Framework, JUnit, Jetty, Tomcat, Android etc. The list continues.
       | The beauty of Java is not Java/Programming language - but JVM. It
       | inspired people to make other languages such as Scala or Kotlin.
        
         | ertucetin wrote:
         | And Clojure
        
       | rando231 wrote:
       | Sort of mystifying that ByteBuddy (a library) is included while
       | Spring framework is not. I realize that some people point to the
       | edges of the Spring ecosystem as proof that it is low-quality,
       | but it's hard to argue against the framework itself being great.
       | 
       | Edit: To clarify, I also don't agree with 'proof' of Spring being
       | 'low quality'. In my experience most who criticize Spring don't
       | understand that it is a loosely coupled collection of things
       | implemented on top of IoC/AOP, and are frustrated when they are
       | forced to diagnose things that go wrong. From the beginning,
       | Spring moved fast because it wasn't bogged down in committee, and
       | it covers huge portions of software development. Quality does
       | vary between the value add sub-projects, but it's amazing what
       | the Spring community has done with IoC/AOP.
        
         | javajosh wrote:
         | Yes, Spring is good, and in general there's been a lot of
         | innovation started in Java and spread elsewhere. The whole
         | "Dependency Injection" idea started in Java, and a lot more
         | stuff started there too, or at least was popularized AFAIK. For
         | example, pattern languages themselves. But some great libraries
         | like JodaTime came from there, as did Doug Lea's very nice
         | rendering of better concurrency primitives - and both of these
         | ultimately got into the core library itself.
        
           | noema wrote:
           | Wasn't the "Gang of Four" book written entirely in C++?
        
       | diroussel wrote:
       | I suspect the greatest java apps are the ones that can't be
       | written about. The ones that run in a data center, that are a
       | tremenous advantage in the market to the companies that run them.
       | These are so important to the app owners, that they don't want
       | others to know about them.
        
       | cerberusss wrote:
       | I'm not surprised that Vuze (or its clone/successor BiglyBT) is
       | not there. But it's one of the oldest desktop torrent clients,
       | and is still being developed.
        
       | listenallyall wrote:
       | H2 database is pretty awesome. Such a pleasure to use vs SQLite
       | and even vs some large-scale RDBMSs.
        
         | codr7 wrote:
         | Second that, I used H2 as the basis for a time
         | reporting/invoicing system that has been runnin without issues
         | for 7 years now.
         | 
         | As far as SQL databases go, definitely my best experience, it
         | just works.
        
       | black_puppydog wrote:
       | For reference, this is what that page shows when opened with
       | uBlock Origin + uMatrix: https://imgur.com/a/yd9OAPB
       | 
       | This might be confirmation bias, but I actually think it conveys
       | pretty much what it should. :)
        
       ___________________________________________________________________
       (page generated 2020-06-29 23:01 UTC)