> I haven't learned yet why some functions have angle brackets, or what generics and collections and factories are.
I recommend all of the basic trails at the Oracle Java Tutorial.
https://docs.oracle.com/javase/tutorial/
The specialist ones you can skip for now and perhaps some of them you can skip forever, generally the basics with suffice for a lot of programming. Well except for the Generics tutorial, but even then initially you only really need to know how to use generics with existing libraries not write new generic libraries, so that is usually quite a bit easier and you don't have to worry if you don't initially get all the generics stuff.
https://docs.oracle.com/javase/tutorial/extra/generics/index.html
Do also spend time getting to know lambda expressions. You can write programs without them, but you will start to see them pop up more and more often in sample code and besides, functional programming is fun.
https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
In terms of books, I haven't read a Java one in years, but if you are just starting, I think that is a good way to do (if you can find a good book). Books I know others have recommended, but I have never used are:
http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683
http://www.amazon.com/Core-Java-I--Fundamentals-10th/dp/0134177304
Effective Java is older, but, by all accounts a classic. Core Java is updated for Java 8, so it is not as outdated as some other books may be.
Honestly, when I program Java, I use an
IDE and I'm pretty lazy as the IDE hints lots of functions and types and syntax corrections for you. Not sure if that is the best way to learn a language rather than a simple text editor and command line, but I sure do find the IDE helpful.
https://www.jetbrains.com/idea/
> I'm not sure how much of this is java and how much is the javaFX api.
It's all Java, the JavaFX API is only an API. It is just a set of classes you can program using the Java language, it has no syntax of it's own. Unlike other languages such as Scala, the Java syntax is not extensible to build custom domain-specific languages (DSLs). So everything written in Java has the same syntax, regardless of the API you write against. You lose a lot of flexibility, but it is, IMO, one of the reasons why Java has been relatively successful and long-lived. JavaFX does bring with it it's own conventions, such as it's use of properties and binding, but those functions are all just Java library functions, there is no specific syntax for it. One caveat is if you see very old books or JavaFX applications written in a language called JavaFX Script - that is different from Java and now obsolete. If you see a JavaFX Script application or book, ignore it or burn it. JavaFX Script was phased out prior to JavaFX 2.0, which is some years ago now, so it is unlikely you will come across it anymore.
> There seems to be 2 schools of thought, one is that swing is dead, don't even bother learning it and just learn javaFX. The other is that javaFX is the dead one, because scene builder is no longer maintained, and etc... what's your take on this?
Neither is dead. Swing is good for maintaining legacy apps or integrating into existing frameworks such as NetBeans. JavaFX is good for new applications. Both are only good if you are looking for a Java application framework. Most UIs these days seem to be written for web based front ends (html/javascript) rather than client GUI frameworks such as Swing or JavaFX. That said, I prefer writing in JavaFX than web apps, but that is just a personal preference of mine.
You should develop your own personal preference and go with that. If it were me and I was learning something new and choosing between learning Swing and JavaFX, I'd learn JavaFX unless I needed to work on an existing Swing application. If your only purpose is to get a job and not necessarily to have fun or work on a project which specifically requires a standalone client application, then don't learn either, instead learn back-end programming using many of the web backend frameworks and angularjs+html5 for the front end. If your learning to program for the purpose of becoming a good programmer and want a nice quick way in GUIs, then learning JavaFX is definitely a good way to go rather than other approaches IMO.
Scene Builder is maintained by Gluon:
http://gluonhq.com/open-source/scene-builder/
Some Oracle engineers might still work on Scene Builder (I don't know). Gluon seem to put out new releases every now and then. I think it is open source and anybody can contribute. The latest versions seem to work and be pretty stable to me. I don't use Eclipse and don't know if it or e(fx)clipse includes Scene Builder. Even if it did, I think you would be best to download and use the latest Gluon version (that is what I do with IntelliJ Idea).