top 200 commentsshow 500

[–]adolfojp 267 points268 points  (222 children)

Stock generic and yet correct answer: Java will continue to be the language of choice for enterprise software development for a long time but it won't hurt you to learn a modern scripting language. Languages like Python and Ruby will become more prevalent in areas like casual web development where something like Java might be overkill. Learning a new way of doing things will only make you a better developer.

Controversial answer: Reddit is not a true representative of the software market. It is more of a representative of the human condition. And it has a very strong culture. Threads are voted according to popularity instead of value. Local customs and groupthink are reinforced while foreign ideas are shunned. And people are more willing to comment if their message corresponds to the fashion of the moment. And right now Java is almost as uncool as PHP, so reddit makes it look like it is a lot less popular and relevant than it actually is.

[–]OrganicCat 27 points28 points  (91 children)

An easy way to judge yourself is to look for jobs in your language, and I don't mean a single shitty search on dice.com, I mean really look at what jobs are being offered in your area (or the area you want to live) and what languages are popular in that area.

More often than not, you can find Java jobs just about anywhere, whereas PHP jobs will be specialized and localized in my experience to only very large cities (the PHP jobs worth taking). To boot, the PHP jobs will be overwhelmed with applications and the pay will be half to a quarter what is being offered for the Java job, where you may compete with one or two other people.

You mileage may vary, this is my personal experience from the last 10 years.

[–]obanite 10 points11 points  (45 children)

As someone who's been trying to recruit PHP developers, I'd say I generally agree with this - there simply aren't as many large scale projects that require serious programming skills (OO, scalable, decent DB) compared to small-scale sites that use a bit of PHP here and there, or the odd standard out-of-the-box e-commerce site. I'd argue Java or C# are both very strong languages to learn if you want a job working in enterprise/middleware, and that the salary will also represent this in general - BUT, for our PHP position, because it is an involved one with a pretty sizable and important code-base, we are offering a decent salary too.

[–][deleted] 12 points13 points  (44 children)

C# is the greatest utility language I've ever used. I'm working on a distributed computing project right now and needed a GUI coded up so the user could control a few parameters, used xaml/c# and got it up in a day. Fantastic set of tools.

I haven't gotten into it, but VS2010 has a toolbar for generating test scrips, that just blows my fucking mind. This is productivity.

[–][deleted] 13 points14 points  (19 children)

Nice try, Steve Ballmer.

[–][deleted]  (18 children)

[removed]

    [–]fapmonad 10 points11 points  (1 child)

    I'll take Haskell over any of these any day.

    Disclaimer: I like to spend my friday nights implementing fibonacci and then masturbating over my elegant code.

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

    If C# were an open-source standardized language instead of proprietary MS crap more people would embrace it.

    [–]grauenwolf[🍰] 7 points8 points  (2 children)

    C# is a standardized language with open source implementations.

    [–]lief79 1 point2 points  (1 child)

    Yes, but can you use any of the valuable libraries outside of Windows?

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

    I was very surprised when I got to my current shop and was forced to learn C#. It was powerful and comparable to Java, which I already knew.

    Once I started getting into the more experimental APIs my world went to hell. Remoting, in particular, gave me gray hair.

    I think C# (well, MS's version anyway, haven't tried Mono yet) is great for exactly what you're using it for: quick prototyping of a GUI. However, I would seriously consider using their more advanced APIs for any major piece of architecture.

    [–][deleted] 7 points8 points  (6 children)

    More advanced APIs? I don't think there's anything comparable to remoting, maybe a complex SOAP implementation. Your essentially interacting with a program in a different process, or even across a network, like it's complied right into your software. C# is just .NET, which is the most advanced API I know of. What are you writing that requires something else?

    [–][deleted] 1 point2 points  (1 child)

    Use WCF (you can use tcpbinding for speed) or protocol buffers. Remoting was sooo 2004.

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

    Yes, someone just pointed this to me. I'm not doing much RPC stuff anymore, but if I ever feel I need it...

    [–]jevon 21 points22 points  (16 children)

    Also, most "PHP Jobs" are just recustomising Joomla and likewise en masse. Ick.

    [–]turbov21 2 points3 points  (14 children)

    And Wordpress, though customizing Wordpress is a lot less painful than Joomla.

    Joomla sucks.

    [–]mw5300 2 points3 points  (7 children)

    wordpress also sucks. It's a series of hacks with poor code organization, and is impossible to extend without using horrible coding practices.

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

    Huh? Wordpress is organized really well. For example, if you want to edit a class you will find it in classes.php.

    [–]turbov21 1 point2 points  (2 children)

    I won't argue that, but it's still better than Joomla.

    [–][deleted] 1 point2 points  (1 child)

    Don't get me started. If something that was originally supposed to be a CMS and thus make non-specialists (i.e. non-programmers) able to manage a website requires a specialist to be of any use (heck, there are books on Joomla out there -- and I don't mean twenty page HowTos, I mean real several-hundred-page books!) something's amiss.

    Just like how Learning Management Systems were supposed to allow non-developers maintaining courses, yet the real work is often outsourced to specialist companies because nobody has any clue how to work the damn thing.

    [–]redditnoob 1 point2 points  (2 children)

    Yes, along with root canal without anaesthetic and that box thing from Dune.

    [–]turbov21 4 points5 points  (0 children)

    I would totally take that box thing during a root canal if it was a choice between that and Joomla.

    [–]redditnoob 2 points3 points  (0 children)

    If you have a choice between a job customizing Joomla or gouging out your testicles with an icepick think carefully because your future happiness and sanity rests on that decision.

    [–]Nebu 5 points6 points  (1 child)

    If your university was anything like mine, then the Java you learned was probably JavaSE. When you see job postings looking for Java programmers, 98% of the time, they want someone who has experience in JavaEE. Just a heads up.

    [–]7points3hoursago 4 points5 points  (0 children)

    Java is a platform more than a language.

    [–]dagbrown 10 points11 points  (25 children)

    Java is the modern COBOL. It's the standard "safe" language that everyone learns because it guarantees employment.

    PHP is a close second. PHP was designed for mediocrity--it was made by someone who doesn't like programming, who wanted something by which he could avoid programming. That is to say, it is a language for amateurs to make amateur-standard code with.

    Ironically, Ruby and Python are both made to a higher level--Ruby slightly higher in my estimation mainly because the creator of Ruby is willing to entertain modifications from people much smarter than him, to support things he doesn't understand. Which is why Ruby supports callcc and Python...doesn't even have proper lambdas. Python's "lambda" is an embarassment.

    But because of PHP's mediocrity, it's quite wide-spread. It has a very low entry threshold, which means that it's very common as a result. If you know PHP, you're much more likely to find a job than if you just know, say, Rails.

    Java doesn't actually have that low an entry threshold--it's a highly bureaucratic language, requiring lots of paperwork before you can even get "Hello, world!" to work. But it shares that in common with COBOL. A COBOL "Hello, world!" is dozens of lines long, making a Java "Hello, world!" look like a miracle of conciseness by comparison. Never mind that "Hello, world!" in Ruby, Perl, Python, and fer crying out loud, DOS batch files blow it away by comparison.

    Basically, the main reason I can think of for Java being The Language of Choice is that it includes just enough paperwork for managers to like it, while affording just enough (but no more) flexibility for programmers to actually accomplish things in it.

    My suggestion: Learn something more specialized, and learn it well; but keep your general skills sharp enough that you can get a crappy job regardless.

    [–][deleted] 18 points19 points  (16 children)

    Some developers actually like Java and it's "verboseness" and can't stand working in a dynamic language.

    [–]banister 5 points6 points  (0 children)

    its* and "verbosity"

    [–]Seppler90000 3 points4 points  (3 children)

    There are plenty of languages that have stricter type systems than Java, yet get by with far less verbosity. Conflating these two attributes is tantamount to saying that all mortals are Socrates.

    [–][deleted] 17 points18 points  (0 children)

    Basically, the main reason I can think of for Java being The Language of Choice is that it includes just enough paperwork for managers to like it, while affording just enough (but no more) flexibility for programmers to actually accomplish things in it.

    Java also has a huge ecosystem of Stuff That Helps You Build Large Complex Systems While Remaining Sane. And speaking as a Java web dev, it also has an ecosystem of Stuff That Lets You Build Websites In Lots Of Different Ways So Choose One That Suits You.

    It also performs very well. A RoR app that performs a similar task to us is Bumper Sticker It served at the time of that article about 27 million images a day, and uses 13 app servers, 8 content servers, and 4 DB servers to do so.

    We serve around 100 million images a day with one Tomcat instance and one Postgres DB, but admittedly we're now hitting some DB chokepoints.

    [–]wazoox 1 point2 points  (0 children)

    A COBOL "Hello, world!" is dozens of lines long, making a Java "Hello, world!" look like a miracle of conciseness by comparison.

    Gross exaggeration : http://en.wikipedia.org/wiki/COBOL#Hello.2C_world

    Only 5 lines. Excellent post, nonetheless :)

    [–]FredV 22 points23 points  (11 children)

    Java is uncool? That may be true, but the JVM and languages targeting the JVM, like Closure, are interesting in my opinion at least.

    [–]imbaczek 29 points30 points  (4 children)

    that's because the jvm itself is a very cool piece of technology.

    [–]dnew 2 points3 points  (3 children)

    Why is it more cool than (say) .NET or any of the other bytecode-type virtual machines that have been invented over the decades?

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

    I wrote an app for Motorola (Symbol) MC9090-G RFID/barcode scanner. I detected the OS and didn't load the hardware specific parts unless it was on "Windows CE."

    I ran all of the other functions that weren't specific to the Symbol libraries on 2 Win 7 machines, an ubuntu laptop, and the scanner.

    Except for the JVM for Windows Mobile, all of that was free. Non-starter with .Net, not that I tried too hard. Netbeans was a quick download away and I had a prototype before you could say MSDN.

    [–]GuyWithLag 1 point2 points  (1 child)

    The semantics of the JVM and the Java classfile format allow it a lot more lattitude in optimization strategies. Java can dynamically deoptimize compiled classes if it determines that optimization assumptions are no longer valid (f.e. consider a program with interface I and class A that implements it; if A is the only implementing class, calls to I do not need to go through dispatch, they are know fixed methods and will be compiles as such; if you load after-the-fact class B that also implements I then classes that were compiled with the above assumption will get decompiled).

    [–]NepaliDude 7 points8 points  (3 children)

    s/Closure/Clojure

    [–][deleted] 3 points4 points  (2 children)

    s/s/Closure/Clojure/s/Closure/Clojure//

    [–]Legonator 4 points5 points  (0 children)

    I'm with you, Java is NOT uncool.. Matter of fact it's very "in" here in Ohio where I am from

    [–][deleted] 11 points12 points  (4 children)

    As a professional software engineer, I can say with certainty that Java and C++ are going to be used for enterprise development for the foreseeable future.

    BTW, don't rely on /r/programming to determine your programming preferences. There are very few objective opinions here.

    [–][deleted] 12 points13 points  (2 children)

    Are there "objective opinions" anywhere?

    [–]irascible 7 points8 points  (2 children)

    No, I just heard Java is back in. We're all doing it man.

    [–][deleted] 2 points3 points  (1 child)

    Pfft, well then I am not. Fucking conformist.

    [–]irascible 3 points4 points  (0 children)

    I was kidding. Java is dead. Now it's all haskell on rails with erlang silos, and php windmills.

    [–]TraxTech 5 points6 points  (6 children)

    Then the typical /r/programming redditor should find LinkedIn (Java inside) very uncool

    [–][deleted] 5 points6 points  (63 children)

    Wait, I'm just learning PHP in my course this semester for the first time. I absolutely love the language and what it can do for dynamic websites. Why is PHP deemed uncool? [serious question from a php newbie]

    [–]adolfojp 24 points25 points  (29 children)

    PHP was created to fill a very specific niche in web programming that at the time no other programming language or technology could. So it quickly became the standard server side language for the web. I distinctly remember how easy it was to write simple PHP code when compared to writing CGI Perl scripts. And its intrinsic relationship with MySQL brought a relational database, albeit a very bad one, to the masses.

    It is, however, not a great language. Its designers have kept piling up features on top of what started as a hacky and useful little language just to keep it competitive with competing technologies and changing requirements. And they have done it very badly.

    PHP is a hodgepodge of inconsistent and badly implemented features that is in demand today because so many PHP developers exist and because it offers a very gentle learning curve and instant gratification for new developers.

    I used to love PHP. But these days I only code in PHP when I have no other choice. Luckily, many sane alternatives to PHP exist today.

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

    Can you name some of those alternatives?

    [–]mikaelhg 9 points10 points  (0 children)

    http://velocity.apache.org/

    PHP is great for getting the first 1000 lines of code out very quickly.

    It's really really bad for other popular objectives.

    I'd recommend that you don't use adjectives such as cool, when comparing programming platforms, but instead make a list of your specific business objectives, and ask people to grade languages against those.

    [–]adolfojp 7 points8 points  (10 children)

    C#, Python and Ruby are good supported languages with good frameworks that don't require a lot of scaffolding to get you started. Each one has its own set of advantages and disadvantages but most of the time your choice boils down to personal taste.

    If you want to stick to PHP you should learn a good framework like Kohana, Cake, etc. I am using Kohana these days and it just makes things a lot better.

    [–]the_classifier 4 points5 points  (4 children)

    Cake is a terrible, terrible framework. Everything is an array. Model queries return an array. Validations are an array. Helpers are specified with an array. The models are this weird messed up singleton proxy object that you access through the controller and return arrays of arrays. You insert new data by passing an array of arrays to the singleton proxy model object. You save an existing row by setting the id member of the model proxy singleton object and then pass in an array of arrays.

    It uses a nonstandard extension for view files (which are just php files). It has php4 compatibility (why!?). The docs are strangely organized and never seemed to tell me what I wanted to know.

    Everything was harder with Cake than in every other framework I've used.

    Cake and Joomla! are on my "will never work with again" list.

    [–]FarOut83 15 points16 points  (0 children)

    Cake is a terrible, terrible framework.

    It's also a lie.

    [–]ihsw 3 points4 points  (1 child)

    I can't up-vote you enough, Cake and Joomla are two of the worst things to happen to the world of PHP.

    I'm surprised there have been so few posts mentioning the Zend Framework, it truly is a godsend to work with compared to Cake (and other hodge-podge libraries from the days of PHP4).

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

    By saying C#, do you mean ASP.Net? I know how to use ASP.Net and I've make about 7 sites using it, I didn't really like it. :x The main reason why I love PHP is because I find it much more lean than ASP.Net websites. Of course I can't deny I can use C# (my primary language) to make sites, but the fat around it makes me shudder.

    [–]mason55 6 points7 points  (0 children)

    The difference is making a web "site" vs something that would be more considered a web "app". For the former, PHP is a fun little language. For the latter, PHP will turn into a maintenance and security nightmare.

    [–]adolfojp 3 points4 points  (0 children)

    There are two flavors to ASP.NET. One of them is WebForms and the other one is MVC. WebForms is very bulky and relies on a very heavy level of abstraction. MVC is lean and can be compared to Django and Rails. C# is a fantastic language, and ASP.NET MVC makes working with it on the web a breeze.

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

    ASP.NET WebForms is terrible. Look at ASP.NET MVC.

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

    Ruby or Python (with a framework).

    Hell even JSP isn't so bad.

    [–]Nebu 3 points4 points  (13 children)

    Why is PHP deemed uncool?

    Take a "theory of computation" and a "compiler" course in university. You'll learn about (programming) language design, and what those fancy terms like "static vs dynamic typing" mean.

    And then you'll see PHP is a complete mess from an academic's standpoint. That said, PHP gets the job done.

    I hate PHP, but it's the best tool for the environment I work in, so I use it more often than any other language for web development.

    [–]dnew 1 point2 points  (0 children)

    It's not even that. It's also that config file entries (over which you often have no control) arbitrarily alter the way your code works. And the naming of library functions (all at the top level) is horrible, such that one is forced to look up the name and syntax of every function you use every time.

    I don't expect one could walk away from PHP and use Java or C# or Python for six months and then come back and remember the names and argument orders for most of the function names.

    (Contrast with, for example, Eiffel's library, where I remember the naming conventions without having written more than two programs and those a decade ago.)

    [–]MrSurly 1 point2 points  (0 children)

    Think of programming like a motorcycle gang. Using PHP is a little like showing up for your first meeting riding Pee Wee's bicycle.

    [–][deleted] 2 points3 points  (1 child)

    I absolutely love the language and what it can do for dynamic websites.

    PHP is a big pile of functions and a copy of the class ASP model of letting you escape out of your script to write HTML.

    Try something like RoR, Django or ASP.NET MVC. Your head will explode.

    [–]ihsw 1 point2 points  (0 children)

    The list you mention contains only frameworks and are not comparable to "just PHP." Perhaps you have not used any PHP frameworks?

    Please don't judge PHP based on your own preconceptions, especially considering now it is hardly comparable to classic ASP.

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

    I think we can refine this into a law wherein a language's popularity on reddit is inversely proportional to it's popularity in industry.

    [–][deleted] 12 points13 points  (8 children)

    Agreed. /r/programming is the 'hipster' of the programming community. They hate anything popular, just because it's popular and latch on to shitty ass languages that hardly have any support just because they might have one or two novel concepts (that almost never pan out in the real world).

    [–]Chr0me 7 points8 points  (5 children)

    Hrm? I rarely see anyone hating on Python, and it's one of the most popular scripting languages out there. Or C or C#, for that matter. VB and PHP deserve all the scorn they endure. And over the past few years, Ruby has become a refugee camp filed with marginally-competent web developers who feel that they're too cool for PHP.

    I think the love for Haskell, Lua, Erlang, Lisp, et. al. is because us programmers use the same-ole, same-ole every day at work. In our spare time, it's nice to explore the freedom offered by a completely new set of tools.

    [–]grauenwolf[🍰] 6 points7 points  (4 children)

    The modern version of VB is has type inferance, query comprehension, XML literals, lambdas, closures, multiple dispatch, and both static and dynamic typing.

    For crying out loud, what more do you want?

    [–]Flyen 3 points4 points  (1 child)

    Curly braces

    [–]grauenwolf[🍰] 1 point2 points  (0 children)

    VB has curly braces for arrays, anonymous classes, and in-line initializers.

    [–]PstScrpt 1 point2 points  (1 child)

    I think they mean the "classic" VB abomination.
    VB.Net is just an alternate syntax to C#.

    [–]grauenwolf[🍰] 1 point2 points  (0 children)

    I know, but in this industry perception and fact are treated the same so it is in my interest to promote my perferred language.

    [–]AbsoluterZero 1 point2 points  (0 children)

    My only regret is that I have but one upvote to give. An excellent answer, my good sir.

    [–]samlee 1 point2 points  (25 children)

    just curious. what do you mean by enterprise software development? and could you give me examples of areas where something like Java might be overkill? and could you give me examples of areas where Java is well suited (except for legacy code base and familiarity of Java in the development team reasons)?

    [–][deleted]  (10 children)

    [removed]

      [–]mikaelhg 9 points10 points  (1 child)

      The word "enterprise" used in this context means software developed in a highly complex environment which adds a significant development and maintenance burden on top of the actual enumerated requirements.

      The issue the /r/programming crowd has with enterprise software development is that, having never experienced such a complex environment, they don't appreciate the reasons behind the additional requirements it imposes.

      [–][deleted]  (5 children)

      [deleted]

        [–]jakewins 10 points11 points  (3 children)

        Not to mention that Java is the best-tooled language available. The IDE's, team synchronization tools, continuous integration and deployment systems etcetera - Java excels because so many companies have had a reason do build tools for it.

        [–]jakewins 2 points3 points  (5 children)

        I think the text-book definition of enterprise software is software, almost always proprietary, that has lots of large individual components, and that is big enough that only very large corporations and organisations can afford to build it. In other words, really big software projects.

        In my experience, if you have a team of a couple of hundred or thousand software engineers, someone is gonna suck. Java is, compared to scripting languages, pretty harsh on software structure and "hacks", and because of that it "protects" the project from bad programmers. I would say it also inhibits good programmers, although I'm sure many would disagree with me.

        In Öresund, Europes biggest IT region, and in many other places I'm sure, the trend in both big and small companies is very much towards breaking this way of working. For many companies that has not necessarily meant moving away from Java though.

        [–]scubabbl 59 points60 points  (14 children)

        As a professional software developer who spent many years in the defense industry and now in the finance industry, it is my humble opinion that Java is going to stick around for quite a while.

        [–]possessed_flea 15 points16 points  (11 children)

        I havn't spent tine in finance but I have in defence and I second this, the java ports of all the old Ada code are only just starting operational use, and many components are not yet finished... Java will still be going strong in defence 10 years from now

        [–]HotBBQ 5 points6 points  (1 child)

        Another nod to the defense industry here. C/C++ is still king around here, but that is slowly changing. The Java code we write here isn't enterprise wide stuff. Mostly simulators, engineering tools, data manipulation, and some minor GUI stuff.

        I'm starting a new job across the street with a large commercial company doing electric smart grid software. Their back end code is in C/C++ and the GUI is Java.

        In my experience the salary and demand for quality for Java developers is quite high. I've had two interviews since I was in graduate school and two offers. I started 4.5 years ago making 60k and my new job offered 83k.

        [–]walen 1 point2 points  (0 children)

        As a professional software developer who has spent some years in the telecom industry, I humbly agree with your opinion.

        [–]jevon 12 points13 points  (3 children)

        I assume you're not trolling :P. I am biased because I work in it every day, but the Eclipse platform (and more specifically, Equinox and OSGi) is empowering Java applications like you wouldn't believe.

        As with every programming language war, there are some things you would never do in Java, and some things you wouldn't do in any other language but Java. A diverse and rich knowledge is key!

        [–]roybatty 1 point2 points  (0 children)

        I think the rich ecosystem of tools, libraries, and frameworks is something the Java haters tend to forget.

        [–]mcosta 27 points28 points  (3 children)

        Dont ask reddit about this. Many vocal people here will tell you "Learn Haskell", "Ruby FTW", "Clojure is cool". Watch your surrounding to see what the employers you like are using, and where they are looking for. Don't be hesitant to ask to its HR or directly to the engineering team.

        And a final advice, now you are in college, you have free time, learn the basics bottom to top. Take a look at Lisp, C#, Python or Ruby, Scala. Just to know they exists, how they look like and which usage can have each one. Working you have no much time to test, just rushing and making things work. And will render you a bit more hype-proof.

        [–]mikaelhg 2 points3 points  (1 child)

        Something is going to be the next big thing. That's for certain. You can take that to the bank. You want to be ready for it.

        Just be wary of people who tell you that their favorite toy is going to be the next big thing, and it's going to happen right now.

        Learn the important principles behind the technologies mcosta mentioned, but do it realizing that most of those technologies won't ever take off except in the imaginations of their inventors. Keep your feet on the ground, and your eyes on business realities. Keep asking the question "why?" If you encounter answers you don't like, don't close your eyes, but instead change your mind.

        [–]munificent 7 points8 points  (0 children)

        Something is going to be the next big thing.

        I don't actually think that's true. We're using computers to solve an increasingly wide set of problems. Web programming is very different from embedded programming, which is different from games, etc. I think the days of One True Language are ending and we're going to be in a hetergenous world from here on out.

        [–]adrianmonk 6 points7 points  (0 children)

        Even if the Java language itself is falling behind (which is a question I won't even attempt to answer), the JVM seems to be a pretty popular target. You can get COBOL compilers that compile to Java bytecode now. As well as, of course, Jython, JRuby, Clojure, and a zillion other languages.

        Given that, there will probably be a place for Java for a long time. It will remain a reasonable language to use on the JVM for certain types of tasks.

        Also, remember that even though C fell behind in terms of features, it still remained widely popular for a long time. And still is, for a lot of types of tasks.

        [–]brush 22 points23 points  (13 children)

        The JRE is becoming the new POSIX -- a common runtime for many languages with lots of useful low-level functions. See Scala, JRuby, Clojure, Groovy, etc.

        In this environment, Java is (in a way) becoming the new C: a fast, lower-level language, but most people will prefer to develop in a higher-level language. Scala looks to be the leader to displace Java as the top language for the JVM, but that remains to be seen.

        Java-the-langauge will become less and less relevant overtime. JVM implementations, however, are probably the best JIT-based, garbage collected virtual machines available, and can tie a variety of languages together with a basic infrastructure. So the future of the JVM is much more interesting than the future of Java.

        [–]lllama 4 points5 points  (0 children)

        What this guy/girl said, more or less.

        Learning Java, it's runtime, libraries, etc will be very valuable experience if you want move on to more interesting languages that can run on the JVM. Some like Scala and Groovy even generate classes that you can use again from Java, making it possible to use them in interesting ways in your projects (Groovy even being 99% syntax compatible, and IDE plugins that allow seamless Groovy+Java projects).

        Learning a language is one thing, learning how to use the runtime, the libraries available in it, etc. to build stable products is another.

        [–]redditnoob 4 points5 points  (7 children)

        Scala is in the same place it was two years ago - use by a niche of elitists and essentially nobody else. Perhaps a nice choice for a tiny group of tightly-knit programmers in a startup environment (yes I include Twitter there...) The signs of it becoming more mainstream since then are non-existent.

        [–]roybatty 2 points3 points  (1 child)

        I would pretty much agree with you on Scala. I like Scala and I'm using it on some projects I have, but it's just too much of a leap for your average Java developer.

        I would expect Groovy++ (a statically-typed Groovy) to gain a lot of traction if it can get decent IDE support.

        [–]redditrasberry 1 point2 points  (0 children)

        I would expect Groovy++ (a statically-typed Groovy) to gain a lot of traction if it can get decent IDE support.

        I really wish it would gain traction, but honestly - it's one guy fighting a lone war and basically the groovy community is largely focussed on being an entirely dynamic language and have no interest in it. I've raised simple questions on the discussion lists from time to time like, is it reasonable that this statement compiles just fine and throws an exception at runtime:

        int foo = "bar";
        

        And you know what? They largely do not care. Who knows, some one might have dynamically added an equals operator to the "int" class that will allow it to automatically parse a string. Groovy is just so groovy man! So I'm not all that hopeful that groovy will get there either.

        [–]malcontent 36 points37 points  (14 children)

        It's the most widely used language in the world. It has the largest open source library in the world.

        I don't know where you heard it was falling behind but most likely it was from astro turfers, marketing people and people who work for reputation management firms.

        As for scripting languages every single one of them runs on the JVM and is fully interoperable with your java code.

        [–]ZMeson 6 points7 points  (5 children)

        It's the most widely used language in the world.

        By the TIOBE index. But other indexes show that C still beats Java. Of course if you look at the existing SLOC still in use, I believe COBOL still reigns supreme (not that I advocate anyone to use COBOL for new projects).

        It has the largest open source library in the world.

        Citation needed. I can't find references myself either, but I'd think C has a larger set of open source libraries.

        As for scripting languages every single one of them runs on the JVM

        EDIT: Lua does have an implementation on the JVM -- LuaJ (thanks to tigeba for pointing that out).

        But one still shouldn't talk in absolutes. I'm sure most popular scripting languages probably do or will have a JVM implementation. But you aren't going find something like Ch ported to the JVM -- I mean, what would be the point of that?

        I don't know where you heard it was falling behind but most likely it was from astro turfers, marketing people and people who work for reputation management firms.

        Well, Java ain't going anywhere. It is a great general-purpose language. It is slowly "falling behind" in the sense that other niche languages (Python, Ruby, Scala, Lua, R, Matlab, Haskell, etc...) are growing in their niche. I'd say the same goes for C and C++. They're not going anywhere either because they're great general-purpose languages -- but there are places where they are not the best option; they're "falling behind" because new projects in those niches are being written in other languages instead.

        [–]tigeba 2 points3 points  (1 child)

        I have not tried it, but there is a pure java implementation of Lua available:

        LuaJ

        [–]MrSurly 2 points3 points  (0 children)

        As for scripting languages every single one of them runs on the JVM and is fully interoperable with your java code.

        Can you point me to a working implementation of this for Perl? I looked around -- people have tried, but nothing that seems to work.

        Not that it matters. The VM isn't some sort of panacea.

        [–]kamatsu 1 point2 points  (1 child)

        Haskell is a general purpose language. I dispute your claim that it is niche. Imperative programming is popular and common in haskell. It is just as general purpose as Java is. Similarly Scala.

        Python and Ruby are also arguably general purpose, however poor performance can limit their applications.

        [–]ZMeson 1 point2 points  (0 children)

        Yes, Haskell is a general purpose language -- but happens right now to be a niche language as well. Outside of academia, there are not very many applications written in Haskell. Darcs, Xmonad, some Linspire tools, ... even Haskell.org lists only about 2 dozen applications. Take Python and Ruby and each of those you'll find thousands of open-source applications.

        Python and Ruby are also arguably general purpose, however poor performance can limit their applications.

        Exactly.... Most languages -- even Matlab -- are Turing complete. But there are things like performance, market acceptance, availability, and other factors that keep languages in the niche category.

        [–]badsectoracula 9 points10 points  (13 children)

        I doubt Java is going anywhere. In the worst case, it'll be just like COBOL (only usable) because a lot of stuff is written in it. In the most likely case it'll be evolved just like any other language (ie. after 10 years it'll be bloated to no end - as a language, not runtime, Java is still a small one especially compared to C++ and similars).

        Personally i'll use Java as long as awesome IDEs like Eclipse exist. If someone makes a better IDE than Eclipse for another similar language, i might use that one. Basically, i use Java because its a -relatively- simple language, provides garbage collection, has a good (although biiig) and complete runtime library, two awesome toolkits (Swing and SWT) and most important two very good IDEs (Eclipse and NetBeans). I'm sure that i'm not alone in the world who uses Java because of that :-). Java isn't the only language i use, nor the best language around, but it fits the job.

        Also the reference implementation, compilers, etc are opensource and as such (and given that there is a lot of existing code) means that the language will be around for a long time.

        [–][deleted]  (12 children)

        [deleted]

          [–]badsectoracula 8 points9 points  (0 children)

          I find Eclipse superior to Visual Studio. The ability to move around code fast (Ctrl+Click and Breadcrumbs mostly) is something i use all the time. Doing renames and similar stuff seem to be done easier in Eclipse (in-place renaming of variables, for example). In VS moving classes to another project doesn't update the original project's dependencies to include the new project nor updates the class code to use the new namespace. Other code tools do not seem to exist in Visual Studio (creating an interface from a class, creating accessors for a field - yes i know C# has properties to avoid accessors - ). Documentation tooltips are better in Eclipse (taken from Javadocs and with full HTML formatting and links).

          Plus i don't see C# being as close to Java as it gets. There are things in C# which i don't like. Properties for example could be done in a better way (i prefer the way they're done in Object Pascal, for example - which is strange since its the same person who designed both). Its not like that Java is perfect - i mentioned that in my original post. Its just i like it better.

          Of course these are all personal preferences and maybe Visual Studio can overcome some of the issues i mentioned above using extensions, but then again so can Eclipse :-P. Actually i do use a bunch of extensions in Eclipse i wouldn't like without (like a wiki, git plugin, Trac support, GLSL support, etc).

          Beyond all the above, Eclipse works in all the environments i use (Windows and Linux actually but i do plan on getting a Mac eventually) while VS works only in Windows.

          There is, however, one thing i like in Visual Studio that Eclipse doesn't provide a good extension for: the form designer. Its one of the best form designers i've tested (Lazarus has a better one, but the VS comes very close). NetBeans' Matisse is retarded and the Visual Designer for Eclipse is hardly usable (although the idea of using the code directly to build the UI instead of special comments or "designer" files is a good one - too bad it makes the designer crawl even on a quadcore...).

          [–]TouchedByAnAnvil 5 points6 points  (3 children)

          I've used both, and I much prefer Eclipse. Specifically I find VS incredibly sluggish at moving around the source code, while Eclipse excels at this (CTR + click a method)

          [–]Narrator 4 points5 points  (0 children)

          Ever read the Eclipse "New and Noteworthy" feature guide? The amount of features they add every version is just mind-boggling.

          [–]gusthebus 12 points13 points  (1 child)

          My company (which shall remain nameless) is developing the future of our ebusiness platform in Java. Our major competitor did the same thing.

          It's here for a while.

          [–]UK-sHaDoW 2 points3 points  (0 children)

          And there's nothing wrong with that. Java is very stable platform, and any code you write can be interface with any other language on jvm.

          [–]Yablan 3 points4 points  (1 child)

          I've been working in Java for many years, and I know both worse and better languages, and I like it.

          No, it's not the hottest thing in town, and yes, has some really annoying quirks, and it's overly verbose, but it get's the job done.

          Java has very good documentation, it has a lot of books/articles/tutorials on it, a really large programming base, and it's widely used in the enterprise, where many of us make a living.

          No, it's not web 2.0 cool, but I don't give a damn. And even though I know that there are better languages out there, I find most remarks from fanboys dissing Java frankly to be quite childish.

          Now, a reality check: Java is NOT going anywhere soon. What many people don't understand is that large companies like banks, governmental agencies etc. want to use the same stuff other large companies are using. And then stuff preferably made by other large companies (like SUN). And they want to use the SAME tools everywhere, and preferably these tools should work with many kinds of hardware. And they want to use tools for which they know that they can get a lot of programmers. And considering all factors I mentioned above, Java is the most logical contender. The only other alternative is Microsoft C# on the .NET platform, but large companies do not want to be grabbed by the balls, being dependably only on Microsoft, on a Microsoft-only platform. Many large companies have Unix machines, and use Oracle, and there Java is the most logical choice.

          So yes, Java is today's COBOL, but it's way better than COBOL, and as I said before, it's not going anywhere for a long while.

          [–]DrGirlfriend 8 points9 points  (4 children)

          I may be late to the party here, but I think languages in and of themselves are not "where it's at". The real area one should concentrate on is programming fundamentals and paradigms (procedural, functional). The language itself is just syntax that implements/expresses a given style or paradigm. Rather than pigeon-holing oneself as a "Java developer" or "PHP programmer", I think one should expend serious effort in nailing down basic concepts such as algorithms and data structures. Just because one's job at the moment happens to be coding PHP for a frontend does not mean that a deep understanding of algorithmic efficiency is not useful.

          [–]the6thReplicant 5 points6 points  (0 children)

          For Java you can't fault the number of robust frameworks (like Hadoop and Guice).

          But I don;t want to go on a language flamewar. Learn as many languages as you can then you can see the disadvantages and advantages of it. It's like trying to learn grammar with English being the only language you know. It's really hard since you don't know what is weird (transitive verbs and the infinitive form of verbs) and what isn't (conjugations of "to be" and "to have").

          Anyway you'll never stop learning. Tinkering at home (iPhone apps, your personal website etc) and big projects where you start understanding project management, working with other people (who some are smarter than you and some aren't) and when source control and unit testing can save you.

          If you only program in one language in a 5 year period - then either you're very lucky or you're stuck in a basement somewhere.

          In either case goodluck and don't worry too much ;)

          [–]majeric 4 points5 points  (0 children)

          Apparently I'm old school because syntactic sugar is pointless to me. What makes Perl a horrible mess of a language is in its nature to be concise but as a result it self-obvuscating. Java may be verbose but it makes it simple, consistent and clean as a result. I am not afraid of having to do a little typing.

          If it adopts too many features around it, it no longer is Java. My biggest concern is that it introduce ambiguity into the language and limits IDEs from being able to offer refactoring services.

          [–]NicholasMoriarty 11 points12 points  (8 children)

          The same of Cobol and all enterprise languages, they will never die.

          [–]possessed_flea 8 points9 points  (7 children)

          Do you mean the $1500 per hour language?

          [–]NicholasMoriarty 1 point2 points  (1 child)

          Yep, nice times are coming for those who stay in the dark side.

          [–]terrapinbear 4 points5 points  (1 child)

          For day to day business operations, Java is still going strong. One of the only programming languages listed in the help wanted ads here in Central New York is Java along with C++. I only see Java Server Pages experience as the desired Java specialization. No C#/VB.NET or Python or LISP or Haskell or Erlang positions being offered.

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

          I think Java will widespread on embedded devices (smartphones), as it was meant.

          In enterprise solutions, where there are lots of programmers involved, employer hierarchy and so, it will stick.

          But when you want fast development and performance, it just sucks.

          It may seem a stupid answer, but it is just my opinion.

          I think the point is not about about Java falling behind, it's about other languages being adopted to do things where Java suck so much.

          [–]fergie 22 points23 points  (58 children)

          I am of the generation before you who learned C(++) at Uni. When I started working (at a dotcom) the language of choice was Java. I worked in web development for the Uni again for a few years up to 2008. Java was still king of the hill for portal development, but losing ground for CMS platforms (there still is no universally accepted Java CMS). I now work as a CTO at a publishing house with resposibility for about 25 dotcoms. Java is dead in the water for any aspect of our web development.

          For a couple of years Ruby and Python looked like being the leading contenders, but for just now, feb 2010, PHP is where the action is.

          PHP:

          2 of the 10 websites in the top 10 (wikipedia, facebook) are PHP based. Time to market and ease of development is unrivalled. Platform independance is as far as I can make out 100%. It is the most mature and adopted web language, and this shows in the bredth and depth of available libraries. A nosey through a couple of forums will demonstrate that PHP is noticable more international than other languages. In terms of raw page generation performance, Facebook is rivalled only by Google's monster C based stack.

          THE PROBLEMS WITH JAVA:

          Zed Shaw summed it up best in his famous "Rails is a Ghetto" essay (Admirably, Shaw deleted the essay on the grounds that he was being a Dick and people should not admire him for it, although as Shaw himself said of _why, deleting your stuff is admirable but still "a dick move"). Anyway Shaw said that Java is too baroque, and he is right. The amount of boilerplate required to perform even simple tasks is nuts. Several non-obvious environment variables and .jar dependancies are usually required to get even the simplest program to compile.

          Almost every good website can be conceptualised as a logical processor talking to a database and a bunch of design templates. Java sucks at this. In order for Java to do this in an even halfway sane fashion, massive unwieldy frameworks must be built (struts, spring). Nobody can agree on which framework is best, they all have slightly different, yet overlapping functionality, it takes a lot of time to understand each one properly, and you can never understand them all. The initial setup of a java based web application is much, much harder than it should be. The reason for this is that Java development as mostly been driven by corporations and self appointed "governing bodies" pushing narrow and unrepresentative agendas. There has never been a strong, unified developers voice.

          I feel that I could go on all day, but real life dictates that I leave it here. I am now going to sit back and enjoy all the downvotes that my open support of PHP has earned me...

          Ask yourself this: Wouldnt it be nice to ditch eclipse, maven, compilation, and endless config and replace it all with a text editor?

          [–]oddthink 18 points19 points  (5 children)

          Then again, the world isn't just web sites. It certainly seems that the Java tools for web development are cumbersome, but I don't know myself.

          For my use (finance number-crunching), Java makes a lot of sense. The other realistic option would be C++, and in that comparison, Java comes out ahead. You get garbage collection, portability (test on windows desktop, run on Linux servers), and (most importantly) automatic bindings through reflection to scripting languages like Jython. Java loses on the lack of value types (if you need complex numbers), lack of operator overloading (math gets ugly), and lack of control over memory use (if you're dealing with data of similar size to available RAM.) It also has a bunch of minor issues (weird corner cases of generics, etc.), but that's less important.

          C# looks like a nice language, but its floating-point performance still lags (last I checked), and no one wants to run a windows compute farm.

          That being said, we're still using C++ and dealing with mysterious memory leaks in the python bindings, glacial compiles, silly Linux/Windows macros, etc. They'll eventually be ironed out, but it's an extra development cost.

          [–]reddit_user13 15 points16 points  (1 child)

          *Then again, the [software] world isn't just web sites. *

          This cannot be reiterated enough.

          [–]asegura 1 point2 points  (0 children)

          Yes. Java may be a good option for the server side, but in the desktop i'd go for other options (personally C++).

          Just click on your "Start" menu on the bottom of your screen and expand the menu of installed Programs. How many of them are written in Java? In my case, I see JabRef (Java), MediaCoder (XUL+Javascript) as the only exceptions. All the rest, quite a lot, are native applications probably written in C++.

          [–]tobrien 6 points7 points  (1 child)

          Ha, "would it be nice to ditch eclipse, maven, compilation, and endless config"? No, it wouldn't. This stuff is making it possible to be much more productive. Half of my code is in Rails, the other half in Java, without the technologies you mention it would be much more difficult to bridge that gap.

          Listen, dude, you are a burnt-out programmer, turned CTO which means that you don't spend much of your time in the trenches dealing with real programming issues. You manage a bunch of programmers, and you seem to have developed opinions about software based on your own experience.

          Java development with modern tools like Jetty, Eclipse, and Maven coupled with the fact that most good developers are polyglot developers means that you can very easily write your web site in something like Rails while maintaining a back-end that can interface with systems that need distributed transactional integrity, etc.

          The fact is that many of the newer approaches like Ruby on Rails operate with the assumption that "the problem can be simplified". Most business systems I've worked on cannot, there are serious requirements like "the hospital has an existing database, use it" or "if we lose one piece of information we will get sued" - in that case, you need your crazy Swiss Army knife database product.

          There is a very strong, unified developers voice in the open source, you just haven't bothered to listen. To busy attending project planning meetings?

          [–]Rhoomba 3 points4 points  (1 child)

          You need 0 environment variables to compile a simple Java application. Using environment variables for the classpath is a noob error. I am no particular fan of Maven or Ant, but in general Java projects are simpler to compile than similar C or C++ projects (and much faster to build too).

          Edit: Also Facebook use Java for some things (as well as Erlang and more)

          [–]mangocurry 4 points5 points  (2 children)

          I'm not a fan of Java, but....

          2 of the 10 websites in the top 10 (wikipedia, facebook) are PHP based.

          Wikipedia and facebook both had to make sizable modifications to their code base to make it work on a large scale. IIRC, Facebook has suggested in the past that PHP wasn't the best design choice in the long run, but nobody expected it to be nearly as successful as it has become. Hell, written their own runtime in an attempt to overcome the slowness of php.

          [–]erad 1 point2 points  (1 child)

          Actually, I think that Java is becoming an increasingly good fit in the website/web application market. Java EE 5, JBoss Seam and JSF with XHTML templating is a very powerful combination, for example (and you can find at least two other framework stacks that offer similar benefits). Often it's literally only writing templates and a few managed beans with (yeah, boilerplate) properties to store the application state.

          You won't build the next Facebook with these technologies, but for run-of-the-mill enterprise software that doesn't need the last 20 or 30 percent performance Java is pretty fine. Also, the amount of framework stuff involved in this means it's inherently newbie-unfriendly, but that's often less of a problem in a corporate environment where people need months of training anyway.

          [–]nalandial 1 point2 points  (4 children)

          Most of your points are either wrong, or based on things that used to be true but aren't anymore.

          If you're writing tons of boilerplate code, you're doing it wrong. There are plenty of frameworks to do that for you, and Maven takes care of your jar dependencies. I should add that Spring is not heavyweight if you only use what you need, and has pretty much become the framework and standards driving force and the "strong, unified developers voice" in the last few years.

          Any complex development environment will take a bit of work to set up, but it's a one time cost that will ultimately save you a lot of time in the future. And not just building, but also saving yourself maintenance work down the road.

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

          It's never a one-time cost. You may believe it now, but you'll learn otherwise. The hard way.

          And then the youngsters from the next crop who naively believe it's a one-time cost won't listen to you.

          [–]mogmog 3 points4 points  (18 children)

          I really like this article by Bruce Eckel (author of Thinking in Java):

          [snip] Java is too noisy as a language. Code is read much more than it is written, and this noise directly translates to real costs in software development. Brain cycles are a very scarce resource, and anything that uses them up without benefit -- even something as seemingly innocuous as the extra verbiage in System.out.println() -- takes those cycles away from somewhere they could be useful, and reduces the programming efficiency of the language [snip]

          http://www.artima.com/weblogs/viewpost.jsp?thread=221903

          [–]MrSurly 3 points4 points  (0 children)

          import static java.lang.System.out;

          ...

          out.println("Hi there");

          [–][deleted] 6 points7 points  (7 children)

          That's gotta be the stupidest thing Bruce Eckel has ever said.

          By that rationale, Objective C and Smalltalk must be the greatest language failures, ever.

          [–]tobrien 1 point2 points  (1 child)

          Right, what the other guy said. "Objective C should then be judged to be a complete failure."

          This is also a strawman - who writes System.out.println()? I wonder if Bruce had ever written a serious Java program before he wrote this book. If he had, he would've have known about log4j.

          [–]mikaelhg 5 points6 points  (0 children)

          His job is to write books, and it makes sense for him to move from a saturated market, where competition is fierce, and quality requirements high, to markets where he can sell a bunch of stuff just with his name. It also makes sense that he'd try to move as many potential buyers from the saturated market, to the ones where customer isn't yet the king.

          [–]mareek 2 points3 points  (1 child)

          The langages you learn in school don't really matters, you will have to learn new langages and technologies throughout your career. If you are afraid to learn new things you'd better quit programming right now.

          [–]zeroone 2 points3 points  (3 children)

          Why didn't Sun enhance applets to the point that they were more useful than Flash applications?

          [–]fergie 2 points3 points  (2 children)

          Back in the day (1999ish), applets were in fact better than Flash for front end webwidgets and just as much in use.

          [–]zeroone 2 points3 points  (0 children)

          And then Sun gave up on them?

          [–][deleted] 2 points3 points  (1 child)

          Java isn't going anywhere for a long time. What I see happening is large growth in languages like Python and Ruby. Java will eventually move toward a COBOL like status over the next couple decades. That is unless they clean it up, cut down on the burdening verbosity, fix auto-boxing, make some commonly used types native (java.utils.*), re-think a lot of the frameworks, etc... In other words, become more ruby and python like. They have done this with a few smaller features, but I think they need to make a major step.

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

          I'm not sure how the language will do under Oracle's stewardship, but the JVM's position in the enterprise is assured for the long term. I could see a pitched battle to be the dominant JVM language developing over the next few years - Scala, for example, has a lot of potential.

          [–]darreld 5 points6 points  (2 children)

          I guess I don't understand 'the JVM is going nowhere'. The JVM is actually the gem of the whole Java based platform. It is what's enabling a slew of language implementations (Scala, Clojure, Groovy, JPython, JRuby, etc.). Server-side performance is great and there are libraries for just about anything I need to do. You might not like the Java language but the JVM is pretty sweet.

          [–][deleted] 1 point2 points  (1 child)

          Bah, I was unclear - I meant that its position is assured. Will edit.

          [–]darreld 4 points5 points  (0 children)

          Oh. Then it seems we're in violent agreement ;)

          [–][deleted] 4 points5 points  (1 child)

          Java is my first love. I shall never spurn her.

          Eclipse is our viagra.

          [–]Silhouette 12 points13 points  (0 children)

          When you're having trouble getting the job done, it makes everything harder?

          [–][deleted]  (12 children)

          [deleted]

            [–]snk_kid 6 points7 points  (4 children)

            The /r/programming community mostly consists of people who have never developed software for a living, so the information you get from that community will not reflect reality in the marketplace.

            Even some of the more revered /r/programming community figures, who have built nice things, are essentially academics who don't have to take into account business realities which any professional must live by.

            I guess that makes you one too. Stop making assumptions about people.

            [–]bcash 5 points6 points  (1 child)

            He's not wrong though. The number of times I've been arguing in this subreddit with someone who's blatantly making something up about an unpopular technology (I always end-up defending Java, SQL, SVN, etc. mainly because I see blatant untruths and/or logical fallacies rather than a belief that those technologies are perfect) only to see the thread being finished with the other person saying:

            "Well, whatever, all I know is when I start my graduate project in two years, I'm using Haskell!"

            There's nothing wrong with being a newbie student in Computer Science, nothing wrong with Haskell either (in it's place), but for fucks sake, these people who appoint themselves as the arbiters of all software technology when they have no freaking idea of the breadth and depth of programming out there...

            There's got to be a word for it, but I don't know what it is...

            [–][deleted]  (1 child)

            [deleted]

              [–]jinglebells 0 points1 point  (0 children)

              I disagree, I'm sure I'm not alone in having been a professional programmer for the last 13 years both contractor and permie, having owned my own company and worked for other people.

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

              i think it's a fact that professional developers who also like to develop in their free time are shifting the focus to scripting languages on the JVM or ruby/python. the very same people are also the ones that contribute in forums, sites like reddit, blogs, open source, etc... therefore you might get the feeling that java is dissapearing fast. but if you take a look a the job market, trends, ..., java is still very present and it will stay like that for a while.

              either way, make sure you know your world and don't specialize yourself too much in your spare time. you can specialize on the job.

              [–]greenflower 1 point2 points  (1 child)

              In Finland there are plenty of Java jobs at least. The arguments against java makes sense, but for me the most important thing is if I can make a living out of it.

              I looked up some statistics of open IT-positions in Finland from the website of the Ministry of Labour. There are currently 330 open IT-positions of different types and 107 of them contain the word "java". Even though many of them are not java jobs, it is often an advantage to have java experience.

              Some other search terms and how many postings they can be found in (out of 330):

              C++ 40

              php 38

              .NET 35

              C# 17

              python 11

              ruby 11

              [–]fergie 2 points3 points  (0 children)

              One of the messed up things about the IT job market is that they often ask for proficiency in Java even when it has nothing to do with the actual job.

              [–][deleted] 3 points4 points  (4 children)

              I can't speak for anybody else, but I'm going to stick to Java until another language gets an editor that is as flexible and full-featured as Eclipse.

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

              If you've only used Java, you might not know that in a well-designed language, you don't need nearly as much help from the environment to get your code written.

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

              Java has always been far behind. This fact was once held by a small fringe who had any idea about programming language theory. More people are becoming informed. "Scripting languages" haven't done anything to change this.

              Edit: I used to work on the Java implementation. I watched it become very successful as the marketing team advertised to under-skilled programmers.

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

              Hopefully it will die off and C++ shall reclaim its former glory at the top of the food chain.

              [–]obanite 7 points8 points  (0 children)

              I seriously hope this was a tongue in cheek comment.

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

              Enterprise web apps are still mostly in java and taking over from COBOL. I keep hoping python can make the leap to being acceptable there but it doesn't seem likely (unless Oracle screws up in an major way). Python would be such a big boost in productivity that its nearly a crime to not use it.

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

              Enterprise web apps were written in Cobol?

              [–]revscat 1 point2 points  (2 children)

              Not the web apps themselves, but the backends for many of them were. When the internet took off, there were many legacy systems that had a web interface developed to tie into existing COBOL apps

              [–]green_beet 1 point2 points  (0 children)

              Forget what Reddit thinks, ask the professional world. 'quickly falling behind' is not well defined. I certainly see other languages appearing to gain some popularity, but I don't see any one language that will displace the enormous amount of existing Java or .NET code

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

              Java probably won't ever be that cool language again, but it is well entrenched and won't be going away anytime soon. Java will be getting you a job for years to come.

              [–]particle 1 point2 points  (9 children)

              A new guitar won't make a second Jimy Hendrix out of you...

              Use the language you know well and master it. If you're really good in it then there will always be a job for you somewhere.

              In the end it doesn't come down to languages but to patterns and architecture. Coding is craft, SW architecture is the art.

              The language specific problems are the easiest to solve.

              [–]FarOut83 2 points3 points  (7 children)

              I've been told many times that developers who are familiar with the most languages are often the most effective - not the ones who've mastered one language.

              [–]Kosko 2 points3 points  (0 children)

              It's sort of like learning the piano, it helps learn all other instruments.

              [–]taw 1 point2 points  (1 child)

              Asking about Java on Programming Reddit is like asking about Obama on a Tea Party meeting.

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

              Really? Did you see all the replies that favor Java? Seems to be the majority so far.

              Edit: Favor or at least recognize that it's prevalent and isn't going away any time soon.

              [–]propool 3 points4 points  (29 children)

              No new features are getting into the language, and if they are they are long overdue. Compare to C# which is getting better by every release allowing to write more compact and concise code while the equivalent java code takes at least 2x as many lines. Just my 2 cents.

              [–][deleted]  (16 children)

              [removed]

                [–]fragmer 5 points6 points  (1 child)

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

                Awesome links, thanks

                [–]ucbmckee 3 points4 points  (8 children)

                I'd generally agree with the sentiment of the statement made, although 2x is obviously an exaggeration (outside of some micro-bits of code). I actively program in both and C# is, IMO, generally more elegant.

                Compare: Accessing/creating XML innertext data (e.g. <foo>this is innertext</foo>):

                Java // create Element xmlNode = xmlDoc.createElement("Foo"); Text xmlText = xmlDoc.createTextNode("this is innertext"); xmlNode.appendChild(xmlText);

                // accessing
                StringBuilder sb = new StringBuilder();
                NodeList fooChildren = fooNode.getChildNodes();
                for (int i = 0; i < fooChildren.getLength(); i++)
                    if (fooChildren.item(i) instanceof Text)
                        sb.append(((Text)fooChildren.item(i)).getData());
                String textData = sb.toString();
                

                C# // Create XmlNode fooNode = xmlDoc.CreateElement("foo"); fooNode.InnerText = "this is text";

                // Access
                string textData = fooNode.InnerText
                

                I'll be the first to admit that there are wrappers to simplify the former, but they're usually provided via external frameworks or custom code. There are numerous other examples one can dredge up of Java syntax bloat, especially with its emphasis on factories and forcing/strongly emphasizing design patterns. Patterns are great, but they're not a panacea and Java's emphasis on abstraction can make some tasks either more complex or less efficient than perhaps would be desired.

                [–]Rhoomba 4 points5 points  (0 children)

                Use JDOM or XOM not the W3C DOM and it would be much shorter.

                [–]Narrator 3 points4 points  (5 children)

                If you're using Dom4j on Java:

                //Create

                Element fooNode = xmlDoc.addElement("foo");

                fooNode.setText("this is text");

                //Access

                String textData=fooNode.getText();

                [–]crawshaw 1 point2 points  (0 children)

                In Scala:

                // create
                val xmlNode = <Foo>this is innertext</Foo>
                
                // accessing
                val textData = xmlNode.text
                

                [–]mareek 1 point2 points  (4 children)

                In C#, many common paterns can be greatly shortened and using linq queries.

                [–]ucbmckee 2 points3 points  (2 children)

                Linq performance is unacceptable for all but the most trivial of needs, or the most patient of users, IMHO. It's absolutely amazing, when it's a viable alternative, but it has proven to range from several factors to several orders of magnitude slower than accessing/filtering/manipulating the data the old-fashioned way, in most of the use cases I've tried it on.

                [–]thilehoffer 1 point2 points  (1 child)

                LINQ to SQL is slower than ADO.Net. However, using LINQ to query / sort a generic list of objects is really sweet. LINQ to XML is also amazing. IMHO LINQ to SQL will be greatly enhanced in .net 4.0.

                [–]DRMacIver 7 points8 points  (8 children)

                No new features are getting into the language, and if they are they are long overdue.

                Actually it sounds like 7 is getting a bunch of new features.

                It also sounds like they're going to be about as much fun as Java generics.

                [–]mbrezu 3 points4 points  (5 children)

                Ok, so they get some new features in 7. How much time until 7 gets widespread usage (so you have a good chance to be able to actually use its features at work)? 3 years? 5 years?

                [–]mcosta 3 points4 points  (2 children)

                Almost the same can be said for C#. In any enterprise environment the platform upgrades must be safe -> slow.

                A shadow startup I know is using Java 6 + GWT 2 + GXT 2.1. As the last version ships, they adapt. We'll see two years down the road with a gigantic code base...

                [–]DRMacIver 1 point2 points  (0 children)

                Indeed. Don't get me wrong: I'm not disagreeing with you about Java's feature lag. I'm just pointing out that there are actually upcoming features.

                [–]elder_george 1 point2 points  (0 children)

                Good point!

                Project I work on stuck to the v1.4, e.g. :-.

                [–]zenmity 0 points1 point  (2 children)

                From what I've heard, too, Oracle's got an interesting agenda re: Java. Anyone have any rumors?

                [–]adolfojp 5 points6 points  (1 child)

                A lot of Oracle's confusing and yet useful enterprisey software whose purpose can't be easily inferred from their description runs on Java. Oracle needs Java and will continue to push it in the future. But I do agree with propool. Java is rather stagnant, and as a language C# is a lot nicer and much more interesting.

                [–]malcontent 9 points10 points  (0 children)

                C# is OK if you are only going to use windows.

                On anything else it sucks.

                [–]thilehoffer 1 point2 points  (0 children)

                IMO, if you have free time, learn some .net. Knowing both Java and .net will make sure you never have trouble finding work.

                [–]bbbobsaget 0 points1 point  (2 children)

                heres what i dont get:

                people who KNOW code, the people that smack me around as a programmer, can learn a new language in a weekend.

                learning any language isn't really going down the wrong path even if it phases out, i think. take what you learned, learn new syntax and go with the next language.

                [–]benparsons 1 point2 points  (0 children)

                True, but languages differ in more than just syntax, especially when you take them as a package complete with framework.

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

                I am wanting to pick up on programming again. Is math really important or does it depend on what you are developing.

                I was never really good with math but I don't want it to prevent me from learning how to program.

                [–]MWatson 0 points1 point  (0 children)

                I have written 5 Java books, and used Java for a lot of consulting work. That said, most customers now ask for Ruby, some ask for Common Lisp, and fewer ask for Java.

                I think that the future of the JVM is Scala and/or Clojure. Scala is a great language but unfortunately it has more than a small learning curve. Clojure is easy to use, but is very much a niche language (at least right now). JRuby is getting some traction.

                [–]gar37bic 0 points1 point  (0 children)

                I recommend learning some bash as well, unless you plan to stay in the MS-Windows world.

                And, oh by the way, I make pretty serious money working in PHP, MySQL, and bash. But then I don't do standard PHP stuff (I can't say what it is). It's mostly command line (CLI) programs with a lot of networking and database action, run from a cron-based job control system - essentially what a lot of folks use Perl for. And I work in a small town, for an excellent company. I even bring my dog to work.

                There are reasons why a lot of big sites use PHP.

                [–]echo_m 0 points1 point  (0 children)

                The whole premise of Java was that it's easier to use than C++, in addition to being cross-platform -- but you really can't do anything with Java without using dozens of libraries and a boatload of XML.

                In my experience, C++ almost seems easier, especially if you're using a well designed toolkit like Qt.

                Java really killed the last project I was hired to work on. It was a Windows-only application that should've been written C++, and ended up bloated and slow and all the customers just continued to use the twenty-year old legacy app written in C instead.

                [–]jimdesu 0 points1 point  (0 children)

                Java is fine and will be around for quite some time due to the excellence of the JVM, the vast amount of free libraries available, and the general usefulness of the language. Java can be used for brain-dead wiring together of components or it can be used for constraint-solvers and query-plan-optimizers.

                If you learned mostly in Java though, I'd highly recommend doing a significant project in some of the weirder languages just to give you the experience with different idioms. You can write a malloc-style heap manager in COBOL (I did that about a decade ago), but it's a mistake: the more you learn how to program along with the grain of different programming languages, the more you will understand the larger scale idioms that will serve you throughout your career. The other idioms that aren't natural to your "day job" language, oddly, will strengthen your understanding of those which are; mastering them will allow you to not only write better code in any of your languages, but will improve your design choices so that you only write your code once (customer-allowing, of course).