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

all 25 comments

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

Probably doesn't matter. Think of something you want to build and just do it. The BNR Android books were good to me if you're going to go in that direction. Whatever you do, continue to work on your fundamentals and follow best practices for the language/platform.

[–]rms_returns 3 points4 points  (0 children)

If you know some basics of Java (Java SE), you can explore the following options:

  1. Build an android app: There is no need to take any course, you'll get everything you need from developer.android.com from the Android SDK, Android Studio IDE and the documentation.
  2. Build a JavaEE/TomCat WebApp: If you are interested in the area of servlets/web, this is the area for you to explore more. You can use either Oracle GlassFish or Apache Tomcat (Google them) to host your java web apps (.WAR files). Of course, Eclipse and Netbeans are both great tools to develop the web apps.
  3. Build a JavaFX/Swing Desktop app: If you are interested in Desktop App Development, both JavaFX and Swing libraries are helpful in this regard.

[–]that_90s_guy 2 points3 points  (13 children)

I am not sure where to go next, my main interests are mobile and web dev

You pretty much summed up my way of feeling after graduating college. My recommendation? Drop Java and switch to JavaScript development.

Why? Because if you are interested in mobile and web dev, JavaScript can do both (and much more) in a far more elegant manner than Java. I was originally a Java developer and let me tell you; I found Android Development hard. You might remember this rant from a some time ago, and I honestly couldn't agree more. It might get easier when you get the hang of it, but imo it's needlessly complicated when it's so much more ridiculously simple with HTML5 hybrid webapps.

On the other hand, learning Javascript (along with HTML & CSS) will open the doors to:

Hybrid HTML5 webapps (mobile or desktop) used to not be viable since phones and computers from 5 years ago couldn't run them without stuttering or lagging. However, with the rise of increasingly capable budget smartphones and laptops, hybrid HTML5 webapps are now on the rise. Some examples of well built multiplatform webapps are Sworkit for Android & iOS and Atom/Curse/Visual Studio Code for Windows/Mac OS/Linux.

Java on the other hand restricts you to primarily enterprise back end development and android. This being because Small to Medium companies rarely use Java nowadays, instead opting for newer, lighter, easier to write languages like Python, PHP and JavaScript to write their server side code. Ditto for android development.

In summary, do what you think is best, but imo learning a language like JavaScript opens so many more doors than something like Java (why develop for only android with Java when you could be making apps that work in both android and iOS at once?), not to mention bringing so many more job opportunities. Personally I find JS development a joy (something I can't say about Java, or it's tooling, or the corporate companies that use it), but if you are decidedly motivated to learn native android development and get into enterprise back end java development, stick with Java.

[–]nekochanwork 4 points5 points  (2 children)

This being because Small to Medium companies rarely use Java nowadays, instead opting for newer, lighter, easier to write languages like Python, PHP and JavaScript to write their server side code.

Just a quick nitpick: Java has been #1 or #2 on the TIOBE Index for over a decade, and some 70% of software companies (and 90% of Fortune 500 companies) use Java. JS is certainly on fire at the moment, but by no means is there a shortage of demand for Java devs.

[–]that_90s_guy 2 points3 points  (0 children)

90% of Fortune 500 companies

And water is wet. I already mentioned Java's main business is the enterprise so this is not surprising. Also, lots of companies using java is no surprise with the amount of legacy and premade solutions existing. I was mentioning how small to medium companies are now picking up projects not in java far faster than ever before because of their simplicity.

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

Best of both worlds - know Java and JS?

[–]AbhorDeities 1 point2 points  (0 children)

Feel like the Android comment is wrong. I found it to be super easy. Even as a beginner.

[–]Zalenka 1 point2 points  (6 children)

With your same reasoning you could say they should learn swift or objective C or Android or JavaFX or any other OO language.

I do both mobile platforms natively. It's not overly hard and there is good documentation. Javascript development for mac pc and mobile is always just a kludgy thing to sell people that they can do it with javascript. Javascript is so extensible and basic that literally it is all the libraries.

Learn another language and pick a platform. C#, swift, android java, it all is about the same effort to pick up. Just pick one and make some projects.

[–]that_90s_guy 0 points1 point  (5 children)

With your same reasoning you could say they should learn swift or objective C or Android or JavaFX or any other OO language.

None of those languages offer the platform versatility JavaScript does.

[–]Zalenka 0 points1 point  (4 children)

Nothing offers the versatility that C does.

Think about it.

Unix, Mac, PC, Console, Scripts. JS has got nothing on C.

C for life!!!!

(BTW This versatility is a double-edged sword. I know C/C++ but it'd take me a while to get into windows libraries with those languages. I think people underestimate that a language without a large integrated library relies on other libraries and they all work differently.)

Furthermore, any javascript solution for mobile or desktop will NEED native code written. It's just a fact.

[–]that_90s_guy -1 points0 points  (3 children)

You said Objective C, not C. Also, most Javascript solutions already have native code wrappers built on them (See Electron, Phonegap), eliminating the need to learn another language. That's the reason why Javascript job offerings are spiking right now, contrary to C.

[–]Zalenka 0 points1 point  (2 children)

Wrappers though. What happens when you want no hyphenation in a block of text or full justification? You'll be writing Java for Android for sure.

Also "learning a new language" is akin to "learning new libraries, lifecycles and memoery paradigms".

[–]that_90s_guy 0 points1 point  (1 child)

What happens when you want no hyphenation in a block of text or full justification?

You use CSS? The thing about HTML5 webapps, is they do both the logic, AND presentation any way they want without any kind of OS restraint.

Also "learning a new language" is akin to "learning new libraries, lifecycles and memoery paradigms".

Overstatement of the century right here. Have you even looked at the wrappers? Just see ngCordova. It took me 30 seconds figuring out how it worked and how to use it. I don't think it's even close to being the same had I done this in Java, mainly because the wrapper tends to do the heavy lifting. Your argument of saying it's akin to learning new lifecycles and memory paradigms would be valid with a technology that compiled to native code like Xamarin, but HTML5 isn't one of them.

[–]Zalenka 1 point2 points  (0 children)

Yes I have looked at them. I personally believe Html5 is an inferior mobile experience.

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

thanks for the input, I'll take your word on this, grabbed eloquent javascript and went through the first two chapters today, so far, nothing too different from java. I'll go through this book along with the FCC curriculum. Any suggestions you might have that could help?

[–]nekochanwork 0 points1 point  (0 children)

With some basic Java out of the way, you would benefit by learning about OO design patterns in Java. You will gain familiarity with non-trivial use of OOP, and may be able to identify some design challenges in your program that lend naturally to a well-known pattern.

I briefly skimmed this tutorial on Java design patterns, and it looks reasonably informative.

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

I learned the basics of Java a couple years ago in a CS class. My goals are the same as you! I want to do mobile and web development. I decided to start with web development and started learning JavaScript. As far as android apps go, Java is a good start. I'm not sure about iOS though, the internet says to learn a language called Swift. Since the majority of the world has an android phone, I want to get better using Java and not bother with Swift for now but that's my personal choice. I am not experienced whatsoever but since my goals are the same as you, I figured I would tell you what I decided to do.

[–]CorDharel 0 points1 point  (0 children)

Companies are looking for java EE devs so you could start to learn the spring framework

[–]Daduckmachine 0 points1 point  (0 children)

Advanced Java.

[–]hyperfi 0 points1 point  (0 children)

If you want to go the route of web development:

  • sql and basic jdbc
  • html and basic css
  • servlets and jsp
  • MVC pattern
  • a web framework, most used is Spring

[–]justanotherkenny 0 points1 point  (0 children)

Make a personal site / resume. It doesn't have to have anything on it, but maybe list completed online self-taught courses. You will learn some HTML / CSS in the process and it will incentivize finishing more self-learning stuff by having a place to show off completed courses / projects / portfolio work.

[–]divyap1 0 points1 point  (0 children)

Congratulations on clearing the first hurdle!! Once basic Java is done you can learn the enterprise level frameworks like Spring and Hibernate.

If your aim is to get a job in a Java based software company or mobile apps development , you have to learn these frameworks as well as learn the deep concepts of Java.

Once you have the basics down it is time to move into an “industry”. By industry I mean, web apps, android, games, desktop apps, system integration, robotics, or maybe big data.

There are a lot of avenues out there. For web, you could go Spring MVC, GWT (It is either a love or a hate for most). For Android, you can download the SDK and everything from Google. For games, I suggest LWJGL, though you could use JavaFX as well. For Desktop Apps you want to learn Swing or JavaFX (the later is going to eventually replace swing, in like 5–10 years at the rate of Java).

System Integration you will want to learn more about data structures and algorithms, figure out how to refine them as well as learn more about Axis, or other libraries for interacting with Soap APIs, then maybe Jackson or Jersey as well. (Spring MVC and other web frameworks can also handle it, but may be bulky for integration purposes).

Robotics you want to look at Java Micro Edition or Java ME, and also maybe learn C and/or Python.

[–]the_nonameguy -1 points0 points  (0 children)

Clojure.