Is Java a good language to learn?

edited September 2014 in General Discussion

I seems java would be the logical next step after learning processing, since processing is java, but it seems like a lot of people say java is outdated. I have already read some stuff online about this, just wondering if anybody on this forum would like to give there opinion. I trust you guys :)

Answers

  • edited September 2014 Answer ✓

    Before I start presenting my reasons for taking this very same path, I will have you know that since this is a Processing forum, if you're taking multiple opinions, then there will be a positive bias towards Java, since it is the language this forum orbits around.

    Now to my "opinion".

    Java is in no way outdated. It's just that the Java 7 and 8 won't really have a major difference (and we're talking big differences here) between each other, and neither will 8 and 9, etc..

    Just be aware that in Java, you will not be offered the same methods as in Processing. Nor will you be given OpenGL graphics functionality in Java by default. You'll have to code in your own methods if they don't exist already.

    In example, take the common Processing code setup. Barebones, it takes up very little space. However, the same code in Java has required me to create 3 classes to replicate what Processing does in those lines of code. (This isn't really to discourage you, but it is to inform that you won't be seeing that little window in Java any time soon. You'll mostly be working with the console, from the time of the transition, on.

    All that being said, if the only language you're familiar thus far is Processing, then I recommend you go to Java. No need to torture yourself more than you have to. A slow, gradual learning curve will do you good.

    Then you can take it to the extremes, later on. It's your call when you want to do that. I refuse to say how long that took me.

  • Answer ✓

    If I were in your position I would go with JavaScript. Other than object oriented code, it is a forgiving language and can be easily applied to HTML to do Processing-like things such as moving visual objects or drawing on a canvas

  • edited September 2014 Answer ✓

    Java isn't a lad anymore. But isn't old either! ;;)
    It still inherits pretty much from C/C++, like their syntax, static typing, primitive types, curly braces, etc.

    Java's main strengths, same as C/C++, come from its huge community & standard API:

    • GUIs like AWT, Swing, JavaFX.
    • List, Map, Set basic data structures.
    • IO disk & URL operations.
    • JavaScript interpreter.
    • Databases.
    • ZIP, hashes & cryptography.
    • etc.

    Java, like C#, Python, Ruby, JS, Dart, etc., needs a huge VM runtime interpreter in order to run it.
    It's both a bless & a curse! O:-)

    The other option is executable compiled languages. No need to install a dedicated VM runtime!
    Besides C/C++, there are many new compiled languages available now:

    ... but it seems like a lot of people say Java is outdated.

    Much probably that's related to the Functional Programming paradigm:
    https://en.wikipedia.org/wiki/Functional_programming

    Even Oracle felt obliged to include such features in their latest Java 8!
    Java 8 now got lambda expressions, Stream & Function packages:
    http://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html
    http://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html

    Those new features are like a mini-language inside another, just like RegEx is:
    http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#sum

    Here's an introduction to Stream & lambda:
    https://stuartmarks.wordpress.com/2013/05/09/devoxx-uk-2013-sample-code-from-accelerated-lambda-programming/
    https://stuartmarks.files.wordpress.com/2013/05/acceleratinglambda.pdf

    If all of that new Java 8 stuff isn't modern enough for ya, you may try some purer functional languages like:

    And even some innovative languages that share the same JVM as Java:

    Those would definitely place you in the modern programming camp route! :bz

  • edited September 2014 Answer ✓

    If you wanna stick w/ Processing's API, there are many "modes" available right now:

    • JavaScript
    • CoffeeScript
    • Ruby
    • Python
    • Android

    There are also similar Processing projects like Arduino (C/C++) & openFrameworks (C++):
    https://en.wikipedia.org/wiki/Arduino#Software
    https://en.wikipedia.org/wiki/OpenFrameworks

    And of course, don't forget the newest p5js project (JS): http://p5js.org/ :-bd

    Outside Processing's API, for web dev, Dart seems the easiest from a Java programmer's perspective:
    https://en.wikipedia.org/wiki/Dart_(programming_language)

    And for compiled language category, Vala is the closest to Java & C# I know about:
    https://en.wikipedia.org/wiki/Vala_(programming_language)

  • Ok, thanks for all the feedback and the links!

    @GoToLoop I have tried android and javascript mode, but what is Python mode? (I do know some Python by the way)

    This is what I'm thinking now:

    Three options: 1. Java or C# 2. JavaScript or Python 3. OpenFrameworks (like processing but with C++ instead of Java)

  • edited September 2014 Answer ✓

    ... but what is Python mode?

    Python Mode for Processing: https://github.com/jdf/processing.py

    1. Java or C#

    C# is a superset of Java made by MS. But it's too bound to Windows OS tough!
    Java works more easily for almost every OS! (*)
    As said before, Vala is very similar to C# & Java, but it's a compiled & faster language!

    1. JavaScript or Python 3.

    Python has a community near as big as Java, C/C++ & C#. But JS is web's lingua franca!
    And don't forget p5js project. Which is Processing's API running in JS! B-)
    Also, "JS Mode" which converts "Java Mode" to JS! \m/
    And Google's Dart. Shows much promise to perhaps replace JS! :D

  • Obviously, buy a mac and go for Swift

    Javascript / HTML 5 is also good

    C++ / C# of course...

    I think when you want to earn money as a programmer....

    umh... it depends on the field of work. In financial services you might find java, in game programming probably not...

    In general I feel java is more for teaching nowadays.... the performance is not as good...

    ;-)

  • Obviously, buy a Mac and go for Swift.

    Buy a specific brand in order to program in a language which only serves them? /:)

    JavaScript / HTML 5 is also good.

    All modern browsers got JS VM built-in. Every1 which got Internet uses a browser. Need I say more? (:|

    C++ / C# of course...

    C++ is too complicated and C# traps us to MS OS, just like Swift!
    If we insist on C++, go w/ openFrameworks framework to ease the pain! >:)

    In general I feel Java is more for teaching nowadays...

    Tell that for business development. Oh, have you heard about Android w/ its Dalvik version? =P~
    I've heard that Python is the teaching language nowadays. Especially coupled w/ PyGame:
    pygame.org/wiki/tutorials

    ... the performance is not as good...

    Java wasn't invented to beat C/C++ or Fortran in performance department anyways!
    Neither C#, Python, Lua, JS. B/c it's not even compiled in native ML!

    Nevertheless, w/ careful planning, Java for games is possible: >:/
    java-gaming.org

    Anyways, I've mentioned a lotta languages which got lotsa speed and are compatible w/ many OSes.
    Much better than being slave to 1 OS like Swift & C#! :(|)

  • edited September 2014 Answer ✓

    Well let's not get too dogmatic about it...

    1st I think it's good too learn different languages anyway, so you can compare

    when you think of arduino you need 2 languages anyway

    2nd I think don't overestimate the advantage of writing for multiple OS - it leaves you with not well optimized languages

    I think performance is still important (and yes, java was not invented to beat C there...).

    I mean, when doing it as a hobby, I don't mind.

    But when you want to earn money with programming, Swift, C++ or C# is the way to go... even when serving only one OS, the market is huge...

    But I think your advices are good.

    ;-)

  • edited September 2014 Answer ✓

    Well, among those "pro" 3, even Apple doesn't veto C++ from its brand "chic" machines.
    And I believe openFrameworks got a way to run its C++ in Mac too! $-)

  • edited September 2014 Answer ✓

    I seems java would be the logical next step after learning processing, since processing is java, but it seems like a lot of people say java is outdated.

    If all your programming experience is from using Processing then I think learning Java would be the next logical step. One of the biggest advantages of using Java is the huge amount of information, resources and help available.

    In many ways the choice of language is not that important (a). Over the years I have programmed in at least 7 languages but the most important skill for a programmer to develop is problem solving. By that I mean, being able to identify and create algorithms to solve problems for a particular task. Converting the algorithm into a suitable programming language is chicken feed by comparison.

    (a) unless you are seeking employment or want your programs to work in a specific area or on particular hardware.

  • Answer ✓

    Chrisir, I fear I agree with GoToLoop on the criticism of your remarks!

    Java is quite fast, with its Jit, it can even beat some C or C++ code in some circumstances. It is used in major Web sites, on the server side, which means that its performance is at least "good enough".

    And C# is probably not faster than Java, so I fail to see why you recommend it over Java. As said, C# is quite proprietary and ties to a platform, while Java is very portable, which is also part of its popularity.

    And I wouldn't spend any time to learn Swift. Well, if I was a die-hard Mac fan, perhaps I would learn it, or if I would want to write only iPhone / iPad applications. That's not the case, I would rather learn Android programming (personal choice!), which is mostly based on Java.

    "when you want to earn money with programming"
    Take a look at the job offers in the computing world. I guess competence in Java programming might count for half of the offers...

    To answer the title "Is Java a good language to learn?"
    Yes. Not necessarily "a good first programming language", but, yes, it is worth learning it. Even more as coding with Processing teaches a good part of its syntax...

  • Ok, I am going to learn java. Then I guess learning other languages should be relatively easy.

    @Chrisir I thought mac used Objective C (I have never heard of swift before, guess I can just google it).

  • Ok, I am going to learn java. Then I guess learning other languages should be relatively easy.

    You are correct. Relatively easy.

    But I won't haunt you with that. Don't bother yourself yet.

  • edited September 2014 Answer ✓

    Ok, I am going to learn Java.

    Project Greenfoot.org can make Java and OOP pretty easier to grasp:
    http://www.greenfoot.org/home

    There are some YouTube tutorials here:
    http://blogs.kent.ac.uk/mik/category/joy-of-code/page/2/

    And let's not forget Oracle's own tutorials:
    http://docs.oracle.com/javase/tutorial/java/index.html

    I thought Mac used Objective C...

    That'd be true just some months ago. Swift is Apple's (and other mactards) latest darling now! >:)

Sign In or Register to comment.