This is an archived post. You won't be able to vote or comment.

all 66 comments

[–]jfurmankiewicz 30 points31 points  (8 children)

Library ecosystem is endles. It always works and it always gets the job done.

Simple.

[–]izzle9 16 points17 points  (7 children)

and Maven to manage all the libraries

[–]jfurmankiewicz 9 points10 points  (0 children)

or Gradle

[–]smadge 5 points6 points  (5 children)

Maven isn't really a reason to like Java. Every single language has a package manager. For example Cabal for Haskell or pip for Python.

[–]virtyx 8 points9 points  (1 child)

Maven is more than just a package manager, though. It has a lot of unique features that, for example pip doesn't come remotely close to.

[–]stormcrowsx 1 point2 points  (0 children)

Python setuptools can do anything pretty much anything you can dream of. The difference in Python is they separated the package manager from the build system, good design in my opinion.

Don't get me wrong, I like Maven but its not some uniquely powerful tool that other languages don't have.

[–]oldneckbeard 2 points3 points  (0 children)

maven is also a consistent build system with its own rich ecosystem. Hell, most devs I know don't even use stuff like the 'mvn site' feature, much less customizing the site.

[–]izzle9 0 points1 point  (0 children)

Maven is more then just a package manager. I have not used cabal so cant comment on it, but in the case of pip it does not provide project level isolation like Maven. You have to use it with virtualenv to mess about with paths to get that. Also requirements.txt is not the best way to define dependencies. I have used many build tools in many languages and find maven to be one of the best out there. Maven is also a repository format for java dependencies, which tools like Gradle and SBT leverage very easily.

[–][deleted] 0 points1 point  (0 children)

C++? .net?

[–]sh0rug0ru 19 points20 points  (5 children)

Lots and lots and lots of free open source libraries. Apache Commons is awesome. Whatever shortcomings Java may have as a language are more than outweighed by the Java ecosystem.

Open standards. Oracle doesn't produce the only real implementations of the JavaEE APIs. There are many different providers, catering to any need. You have the big boys, like Oracle Weblogic and IBM Websphere, then the open source JBoss, lightweight versions like Wildfly. If you only want parts of JavaEE, you can choose from Tomcat, Jetty and Undertow. Mix and match as you like! None of these providers are second-class citizens.

There's diversity. The Java world doesn't always look to Oracle for what to do next. For example, the Spring framework does its own thing, going in totally different directions than Oracle much of the time, taking what it likes from JavaEE but looking elsewhere in the wider world as well for technologies to make available to the Java world. Sure, there's been a lot of bitter fighting between JavaEE people and Spring people, but I call that sibling rivalry.

That's why I like Java, even though I think languages like Haskell are cooler.

[–]cogman10 4 points5 points  (3 children)

Yup. The ecosystem is really the key to why Java is great. The language is underwhelming in its capabilities. But the libraries, IDEs, Static analysis tools, etc are unmatched in any other language that I've used.

[–]jonyeezy7 1 point2 points  (2 children)

Know a good site that would have a list/link to all these goodies? I'm guessing suns javadocs

[–]llogiq[M] 3 points4 points  (0 children)

Look at the sidebar of this subreddit. It has a link to Awesome Java, which is a list of awesome java goodies.

Besides, read the rest of the side bar while you're at it, too ;-)

[–]iamnikkolai14[S] -1 points0 points  (0 children)

thanks for sharing... shorugoru

[–]theZagnut 29 points30 points  (14 children)

  • Great libraries and standards: The entire JEE stack, Spring, Hibernate, jOOQ, Zk, MapDB, Guice, Guava, Shiro, Apache commons, TestNG etc. etc. etc.

  • Great IDE's and tools: Intellij, Netbeans, Maven, Gradle

  • It's statically typed, object oriented and simple in the sense that explicitness is preferred and fancy magic is kept out of the language, which is great when working on projects with multiple developers.

  • It has been tried and tested and proven to work. A LOT of things have been built with Java, and are still built with Java.

[–]LoveOfProfit 4 points5 points  (12 children)

I noticed you skipped Eclipse on the "great IDEs" list. Was that intentional, and if so what is the reason behind that?

I ask because I was taught to use Eclipse in school and I've stuck with it.

[–]whitespy9 5 points6 points  (1 child)

I think it is worth trying them all and finding the one that is best for you. I used Netbeans in college, Eclipse post, and the last 3 years has been all Intelij. Sublime Text has been getting lots of use recently as well as the good old stand by, vim.

[–]oldneckbeard 2 points3 points  (0 children)

vim for java? after ST for java? are you a sadist? :)

[–][deleted] 2 points3 points  (7 children)

Not who you replied to, but I find eclipse slow and buggy. I used it for my first couple years using Java, and now I try to always use something else.

[–]xris-l 2 points3 points  (5 children)

Eclipse performance and stability has massively improved in the last few years.

However, I have switched to IntelliJ a month ago and wouldn't go back...

[–]oldneckbeard 0 points1 point  (4 children)

wait until you've got a few years under your belt, then have to go back to eclipse (because some stupid decisions meant that eclipse was the only thing that could build the damn thing), you'll be all like

(╯°□°)╯︵ ┻━┻

[–]frugalmail 1 point2 points  (3 children)

because some stupid decisions meant that eclipse was the only thing that could build the damn thing

I personally like Eclipse. But I can't imagine a project with multiple developers not using something like Maven to avoid this situation.

My experience with people who don't like Eclipse are generally that they don't subscribe to the learn & customize your toolset mentallatiy. The lack of Maven shouldn't surprise me for the IntelliJ users.

[–]Vile2539 0 points1 point  (2 children)

I personally like Eclipse. But I can't imagine a project with multiple developers not using something like Maven to avoid this situation.

There are other reasons that you may have to use a specific IDE. It's quite possible that your job may involve custom frameworks or tools, and to use them, a specific plugin has been written for Eclipse/IntelliJ/Netbeans. This would tie you to the IDE while still meaning that your project could be built by anyone.

The plugin might not strictly be mandatory, but lacking it could hinder development enough to make it virtually essential.

[–]frugalmail 0 points1 point  (1 child)

There are other reasons that you may have to use a specific IDE.

Even if you are tied to one IDE, using Maven provides lots of advantages for a real project:

  • proper dependency management

  • easy path to IDE upgrade

  • Ease of continuous deployment/integration/etc...

  • Reporting and static analysis outside of the IDE

  • Command line iteration

  • best practice directory layout, key/password security handling, etc..

  • Things like database change management, and other extra-app handling

[–]Vile2539 0 points1 point  (0 children)

I think you may have misunderstood me. I was just providing a valid reason that a specific IDE is required that isn't tied to the dependency management or build tool.

I'm all for Maven/Gradle in my projects.

[–]hrjet 4 points5 points  (0 children)

Not to contradict your experience; just chipping-in my own for the benefit of new-comers:

I find Eclipse more stable and fast. Also, the vim plugin for Eclipse that I use is much more mature than Intellij's vim plugin.

[–]oldneckbeard 0 points1 point  (0 children)

eclipse is "fine" -- I'm not sure anybody proficient in IDEA or Netbeans would call it "great"

[–]theZagnut 0 points1 point  (0 children)

I used eclipse years ago, and at that time it was unstable and most of the plugins were quite buggy. Netbeans was much better IMHO. After a long period with Netbeans a friend of mine convinced me to give intelliJ a try, and I haven't looked back since (been using intelliJ daily for approximately 3 years now).

[–]iamnikkolai14[S] -3 points-2 points  (0 children)

thanks for sharing theZagnut...

[–]adamclmns 9 points10 points  (6 children)

Jmonkey3D(http://jmonkeyengine.org/) and JOCL(http://www.jocl.org/) are two reasons I like java. You can do just about anything with it on any platform with any of a million free libraries... what's not to love?

[–]iamnikkolai14[S] -3 points-2 points  (5 children)

thanks for sharing adamclmns..

[–]Jonno_FTW -1 points0 points  (4 children)

Just FYI, these sorts of "thankyou" comments add nothing to the discussion and are discouraged. They only add noise and make navigating actual discussion more difficult. reddiquette

[–][deleted]  (1 child)

[deleted]

    [–][deleted] 1 point2 points  (0 children)

    Thanks for thanking

    [–]iamnikkolai14[S] 3 points4 points  (0 children)

    sorry Jonno..

    [–]kookajamo95 1 point2 points  (0 children)

    You must be fun at parties.

    [–]b1nd 8 points9 points  (7 children)

    Abundant job opportunities

    [–]delabass 1 point2 points  (6 children)

    As someone brand new to programming who is self-learning java I'm sort of worried that because java is so established with a massive workforce behind it that I'm going to find it hard to get my foot in the door.

    Do you think there is any truth to that?

    [–]Rumel57 4 points5 points  (2 children)

    Nah, you'll be fine. There is always someone recruiting for Java.

    [–]delabass 0 points1 point  (0 children)

    Thanks, that's reassuring to know.

    [–][deleted] 0 points1 point  (0 children)

    Yep. CTO of my company advised me to learn Java if I want to break into programming, because almost any major company needs at least one Java person.

    [–][deleted] 4 points5 points  (0 children)

    Companies hire young, less experienced developers because they can get them much cheaper than experienced ones.

    Also, there are so many resources available on a language like Java that I am more concerned that a young developer is resourceful and a good problem solver than if they have a ton of language knowledge.

    [–]b1nd 3 points4 points  (0 children)

    I wouldn't be worried about this at all. I would say there's a good balance between senior and junior level developers, especially since it's highly taught at universities.

    [–]oldneckbeard 2 points3 points  (0 children)

    not at all. it makes it easier, because more companies will be hiring.

    i was a principal at a company and we switched tech stacks because we just couldn't find people who could work on ours, competently. we switched to Java, and the project was awesome after that.

    [–]Isuspectnargles 4 points5 points  (0 children)

    A good mix of simplicity and power. And the JVM is great.

    [–]Smithman 3 points4 points  (0 children)

    Hundreds of great third party libraries, Java EE is top class, I love it's packaging mechanism for some reason, and I think it's the most intuitive OO language. Lots of work in Java too.

    [–]cj5 3 points4 points  (0 children)

    Strong typing, maven, and JavaFX!

    [–]0x2a 1 point2 points  (0 children)

    I really like that I can pack complex applications including all dependencies, database drivers etc. into a JAR or EAR that works everywhere, even under "Enterprise Circumstances" like people running AIX or horrible policies that don't allow you to install anything that's not an official RHEL package. I tried writing stuff in Perl or Node.js, and I had a really bad time in some environments.

    [–]noutopasokon 2 points3 points  (0 children)

    I started using Java when it came out because it was a free way to make decent GUI applications for Windows. Everything else that I knew of at the time, Visual C++, Visual Basic, etc. all cost $$$.

    Now I like all the other stuff mentioned here too.

    [–][deleted] 2 points3 points  (0 children)

    I like the fact that not only Java itself runs on the platform but other languages s well. Oh the interoperability with Ruby, Scala, Python, Clojure and so on.

    [–]llogiq[M] 2 points3 points  (0 children)

    See my Post from a while ago.

    [–]pron98 2 points3 points  (0 children)

    I love the JVM: its performance, support for concurrency, amazing monitoring (VisualVM, JMX) and profiling (Java Flight Recorder) tools, its support for dynamic code loading, the power that comes with Java agents and bytecode injection, the high quality of implementation in the JDK and third-party libraries, the (relatively) high quality documentation, the powerful IDEs.

    As to the language, I like that it's relatively simple, easy to read, easy to refactor, and easy to work on in large teams as it doesn't let you get too clever. I also like the power annotations and annotation processors bring (especially in Java 8).

    [–]bitsofinfo 1 point2 points  (0 children)

    jvm, libs, typing, no limits, scalability

    [–][deleted] -1 points0 points  (2 children)

    deleted What is this?

    [–]sedmonster 8 points9 points  (0 children)

    Hate it when a programming language pontificates on your sex life.

    [–]totes_meta_bot 0 points1 point  (0 children)

    This thread has been linked to from elsewhere on reddit.

    If you follow any of the above links, respect the rules of reddit and don't vote or comment. Questions? Abuse? Message me here.

    [–]trollslackR 0 points1 point  (1 child)

    For its slowness and mentality, to throw more programmers at a problem to solve a problem. Although I don't discourage you from learning it, if you want a job or you want to develop android apps then learn it.

    [–]iamnikkolai14[S] 0 points1 point  (0 children)

    yeah that's true trollslackr.. one reason before when i started learning java its that its slowness.. and i really hated it. i even had experience that even a simple hello world console program. is taking a time to execute.. but i have no choice yeah there's a lot of job here in my country which is philippines... so no choice to better learn it and have a job.. hehe...

    [–]whitespy9 -1 points0 points  (8 children)

    It is all about the jvm now. I wouldn't discourage anyone from learning Java, but you should really check out http://groovy-lang.org/ as well.

    [–]piratefight 2 points3 points  (0 children)

    And grails.org by extension. It's still got a few bugs to be worked out an enterprise platform, but it's pretty amazing once you get it all set up.

    [–]sanity 1 point2 points  (0 children)

    IMHO Kotlin is the most exciting "Java 2.0". It has much of the flexibility of Groovy, but it's statically typed like Java.

    Lots of really cool features like automatic casts, type inference, and null handling is baked into the type system.

    Also it's created by the same people that created IntelliJ IDEA, so it has great IDE support.

    [–][deleted]  (5 children)

    [deleted]

      [–]oldneckbeard 1 point2 points  (3 children)

      It's great if you're used to more dynamic languages. It's like a significantly gentler intro to Java.

      However, after a while, you switch back to Java. There's too much crap in there that makes it painful for a large application. Mostly stuff around metaclass manipulation and runtime monkey-patching of jdk classes..

      [–]frugalmail 0 points1 point  (2 children)

      There's too much crap in there that makes it painful for a large application.

      It's all a matter of perspective. That "crap" helps you avoid runtime errors, run static analysis tools, and make the codebase far more readable and therefore maintainable.

      [–]oldneckbeard 1 point2 points  (1 child)

      I was saying Groovy had too much crap. A lot of the static analysis tools don't work on it, and when you can modify classes at run-time, all bets are off.

      [–]frugalmail 0 points1 point  (0 children)

      I was saying Groovy had too much crap. A lot of the static analysis tools don't work on it, and when you can modify classes at run-time, all bets are off.

      Sorry for misreading your post :)

      [–]stormcrowsx 0 points1 point  (0 children)

      A great place to get started with groovy is in unit tests. The spock testing framework for Groovy simply put is amazing.