We are about to switch to a new forum software. Until then we have removed the registration on this forum.
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
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.
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
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:
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:
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
If you wanna stick w/ Processing's API, there are many "modes" available right now:
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)
Python Mode for Processing: https://github.com/jdf/processing.py
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!
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...
;-)
Buy a specific brand in order to program in a language which only serves them? /:)
All modern browsers got JS VM built-in. Every1 which got Internet uses a browser. Need I say more? (:|
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! >:)
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
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#! :(|)
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.
;-)
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! $-)
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.
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).
You are correct. Relatively easy.
But I won't haunt you with that. Don't bother yourself yet.
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
That'd be true just some months ago. Swift is Apple's (and other mactards) latest darling now! >:)
Thanks...