17 ms·
Greatest Java apps
- ce4 6y agoThe 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 6y agoIt'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.
- pjmlp 6y agoI look forward to JetBrains replacing the JVM and its standard library, and GraalVM in the process, given that Kotlin is so good.
- Yhippa 6y ago> 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.
- donmcronald 6y agoI 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 6y agoDo you now realize that it's been split out of the JDK again? https://github.com/openjdk/jfx https://github.com/openjdk/jfx
- donmcronald 6y agoYeah, I still check on it every once in a while and I updated a small app to JDK11, but the industry has changed a lot since then. I know Java is still huge, but IMO that's in spite of Oracle, not because of them. The proverbial ship has sailed for me. If Oracle told me the sky is blue, I'd be looking up to verify it. I completely gave up on JavaFX the day Microsoft bought Xamarin. My impression at the time was that Oracle just didn't care about JavaFX and barely supported their own developers. AFAIK they never did anything to encourage 3rd party developers even though there was some really cool stuff. Ex: Microsoft ended up owning RoboVM. I also remember being frustrated the first time I looked at the JavaFX repo myself and saw how few committers there were. All the while Oracle would be simultaneously claiming they're investing in the tech, but actually dumping stuff [2] on the community. It's like they viewed open source as nothing more than a way to externalize costs for things they didn't want to maintain. I never had the inside track on anything, so I don't know what the real story is, but my impression of it has always been that it was badly managed by someone higher up the chain than the people that managed JavaFX directly. Based on my experience everyone on the JavaFX team always made a ton of effort and tried foster a small but growing community. Speaking of community, it was plagued with the same kind of doublespeak. Oracle would be on the mailing list telling everyone they wanted to work with the community [3] at the exact same time they were telling all of us to file our bugs using a plain text input box on bugs.java.com. How the hell do you submit a runnable test case using a single, 4 line high text box? And if you need any kind of indicator to demonstrate Oracle's lack of ability to foster a developer community or provide developers with modern resources, go look at that bug filing system I keep complaining about. It's still the same awful system that looks like a holdover from the 90s. This is all just my opinion, but I honestly believe Oracle squandered a huge opportunity with JavaFX. 1) https://bugs.openjdk.java.net/browse/JDK-8091544 https://bugs.openjdk.java.net/browse/JDK-8091544 2) http://mail.openjdk.java.net/pipermail/openjfx-dev/2015-January/016570.html http://mail.openjdk.java.net/pipermail/openjfx-dev/2015-Janu... 3) http://mail.openjdk.java.net/pipermail/openjfx-dev/2015-December/018320.html http://mail.openjdk.java.net/pipermail/openjfx-dev/2015-Dece...
- cageface 6y agoI'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 https://www.bitwig.com/en/home.html
- pjmlp 6y agoDefinitely, thanks for sharing.
- jmartrican 6y agoDoes it use JavaFx for its UI? If not do you know what library/framework they use?
- callmeal 6y agoI could be wrong, but at first glance, it looks like Eclipse's SWT.
- JonathonW 6y agoLooks like JavaFX or Swing to me-- SWT doesn't really do themed widgets (everything looks like the platform's native controls).
- stereosteve 6y agoBased on this it sounds like the GUI is custom and that they don’t really use an existing framework. https://www.reddit.com/r/Bitwig/comments/4c2zoh/what_programming_language_andor_framework_is/?utm_source=share&utm_medium=ios_app&utm_name=iossmf https://www.reddit.com/r/Bitwig/comments/4c2zoh/what_program...
- specialist 6y agoNice. I nominate Spline, best in class skeletal 2D animator. http://esotericsoftware.com http://esotericsoftware.com
- 6y ago
- altcognito 6y agoLucene? Android :) Tomcat? Maven? The Minecraft coding community is amazing. What they get done without documentation is stunning.
- fieryscribe 6y agoAWS too. A large portion of it is written in Java
- victor106 6y agoAny references?
- manuelabeledo 6y agoI 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.
- Bartweiss 6y agoCiting Maven also feels a bit circular. It's an important Java application, but being a build tool it's only because there's lots of Java out there to build. Minecraft and a lot of the other apps are terminally impressive, so it's easier to justify the ecosystem that produced them.
- tlarkworthy 6y agoIt'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 6y agoIt'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.
- tannhaeuser 6y agoIn 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.
- deleted 6y ago[deleted]
- elric 6y agoBoth 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.
- latchkey 6y agoI was the one who first requested that Doug join the ASF with Lucene. The rest is history... ;-)
- kristianp 6y agoCan you tell us more? Sounds like you have an interesting story to tell.
- amaccuish 6y agoI gave up on lucene and solr on my dovecot server because of memory usage and use https://github.com/grosjo/fts-xapian https://github.com/grosjo/fts-xapian instead
- nicoburns 6y agoYou may also be interested in https://github.com/tantivy-search/tantivy https://github.com/tantivy-search/tantivy
- johnklos 6y agoSo not impressed. Still waiting for, "write once, run anywhere" to actually work.
- suyash 6y agoall those software already have already proven that.
- codr7 6y agoIt 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.
- fian 6y agoI worked on a Java desktop app, that had a highly complex UI written in Swing, for ~14 years. We only officially targeted Windows as a platform. For a few years I switched to a Linux development machine. The only code change required was for our third party license dongle - to reference the correct native library needed for machine fingerprinting. We also ran it on another developers Mac just to see if we could - again we only had to comment out the licensing code and it works flawlessly. So from that experience I would say Java definitely lived up to Write Once Run Everywhere. FWIW we used the Nimbus Look and Feel. Other LAFs may not have had as much polish applied.
- jmartrican 6y agoWhat 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.
- guardian5x 6y agoYea probably, I doubt that Minecraft would've been any less succesful written in C++ or any other language though.
- akavi 6y agoI'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++.
- Eldt 6y agoI'm confident the community driven modding contributed to Minecraft's success in a massive way.
- hoseja 6y agoYeah, 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.
- blackrock 6y agoCould 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?
- 6y ago
- jordache 6y agoNo mention of Android? lol butt hurt
- granshaw 6y agoUmmm, its an Oracle site :)
- capableweb 6y agoI 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 6y agoKernel (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 6y agoThey 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.
- tyingq 6y agoI'd have to give Tomcat the #1 spot for killing off the worst parts of J2EE.
- kitd 6y agoI'd say Spring takes that crown.
- dreamcompiler 6y agoOMG. 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 6y agoYou would have had to lived through a full blown J2EE app on Websphere/Weblogic/JBoss to appreciate it.
- maltelandwehr 6y agoToday I learned that almost every IDE I have ever used is written in Java.
- captn3m0 6y ago>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 6y agoIt 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 6y agoWasn't Google docs written using GWT?
- cromwellian 6y agoOriginally 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.
- rando231 6y agoSort 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 6y agoYes, 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.
- cletus 6y agoSo 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.
- pjmlp 6y agoI 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 6y agoAndroid 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 6y agoTheir wrongdoings with Android to the Java eco-system are more harmful than whatever contributions they might have done.
- misja111 6y agoGuava 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.
- pron 6y agoAndroid isn't Java. Java is a specification of a platform (a set of them, really) and Android doesn't come near to conforming to it.
- rayalez 6y agoI'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.
- tashoecraft 6y agoJava is used everywhere, why do you think you’ll never use it?
- nwsm 6y agoJava 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 6y agoI 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.
- nayuki 6y agoJava 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 6y agoI 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.
- throwaway889900 6y agoNo mention of Runescape, Classic, 2, and OSRS? I suppose "applets" covers it but I think it needs its own mention.
- shpongled 6y agoThat is exactly what comes to mind for me when I think of "Java games". Absolute classics
- GoblinSlayer 6y agoAlso Azureus, featuring legendary laggy java gui.
- LockAndLol 6y agoThey 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.
- diroussel 6y agoI 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.
- the_arun 6y agoTo 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 6y agoAnd Clojure
- mgr86 6y agoAnd groovy, and surely more that I’m not remembering
- DaiPlusPlus 6y agoI don’t know if I’d celebrate Spring... and Oracle would rather Android use “real” Java, not Dalvik. The JVM was nice at the time, but I feel that languages like Scalia and Kotlin exist because Java was too conservative - and many of Kotlin’s great features had to be implemented using hacks and tricks to work-around the JVM’s now-primitive type-system. Also note that Kotlin can now target other platforms besides the JVM. I think we can all agree the JVM is lagging behind the CLR, and the CLR is behind where we should be (when looking at the things that Clang is capable of)
- victor106 6y ago>I don’t know if I’d celebrate Spring I've used SpringBoot recently on several projects after being in the Rails and Django and PHP world for a long time and I must say its super great. I never could have imagined that I would praise a web framework based on Java 5 years ago. Its lightweight, super fast (compared to Rails or Django), mature (its been around more that 15 years) and very stable. It also supports Kotlin development The more I learn about the Spring eco system the more I am suprised by how much stuff it covers everything from Spring Security to Spring Batch to Spring Reactive to Spring Cloud Task. Its mind blowing how much ground it covers. Also, I hear the latest version will support Graal VM making start up times equivalent to native. I strongly suggest spending time with it for those interested.
- cerberusss 6y agoI'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.
- flybyair2048 6y agoIt'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+!
- yashap 6y agoNot 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 6y agoWhat 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.
- yashap 6y agoWhen I think of an application, I think of something used reasonably directly by an end-user. From the linked article, things like IntelliJ IDEA, the Maestro Mars Rover controller, Minecraft, Hadoop, etc. Admittedly, this is just my personal definition, "app" is a pretty loose term. For, say, the "Google Sheets web app", I'd say the entire piece of technology, frontend and all backend services, combine together to provide an application. But if the Google Sheets web frontend depends on, say, 20 different backend services, I wouldn't say that any one of those services is an app on its own. Each service makes up a part of the backend of one-to-many apps. And, from what I know of Google's tech stack, different services might be written in different languages - primarily Java, C++, Python or Go.
- dxxvi 6y agoAfter reading this, I think I need to learn Eclipse Collection and Micronaut.
- anhldbk 6y agoThere's a competition between Micronaut vs Quarkus also. Pls have a look
- blandflakes 6y agoHelidon follows behind, but yes I agree that Micronaut and Quarkus are probably front-runners for this space.
- fnord77 6y agoJenkins is a cancer.
- zulu314 6y agoI 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 6y agoI haven't been much of an ORM userm but what makes it so special? Anything comparable in Javascript or Python land?
- lukashrb 6y agoI 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)
- suyash 6y agoEstablished best practices of good software engineering, vast selection of libraries for pretty much anything, high performance code, cross platform availability, scalability. Pretty much anything you need to build a solid backend exists here and not to mention the large Java dev community.
- black_puppydog 6y agoFor reference, this is what that page shows when opened with uBlock Origin + uMatrix: https://imgur.com/a/yd9OAPB https://imgur.com/a/yd9OAPB This might be confirmation bias, but I actually think it conveys pretty much what it should. :)
- listenallyall 6y agoH2 database is pretty awesome. Such a pleasure to use vs SQLite and even vs some large-scale RDBMSs.
- codr7 6y agoSecond 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.
- lenkite 6y agoI always come back to H2 for an embedded db. So user-friendly! SQLite is nice but H2 useability and standard SQL support is awesome.
- edgarvaldes 6y agoI use Pentaho Data Integration every other week, it's quite nice for ETL.
- ascotan 6y agoJenkins the greatest Java app ever written .... hmm
- mark_l_watson 6y agoI was surprised how much I enjoyed reading that, in a memory lane sort of way. I haven’t used Java in a long while and I haven’t updated my book “Practical Artificial Intelligence Programming With Java” in many years. I decided to rewrite rather than stop distributing the book. I started the rewrite about three weeks ago. First step was tossing out about 1/3 of the material, stressing machine learning, adding probabilistic programming, and updating the semantic web material. After taking a whole day getting my head back into coding in Java, I am actually enjoying it. I still like Common Lisp and Haskell a lot more.
- tolger 6y agoI say this as a Java developer, but I hate UIs written in Java. Native UIs are always superior. IntelliJ comes to mind. I used it for many years, and it always felt "different". There were weird inconsistencies in rendering, focus and behavior that were annoying. Same with NetBeans. On the other hand, I think server side Java is still great.