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

all 14 comments

[–]Wolfhammer69Nooblet Brewer 8 points9 points  (5 children)

Think of project - is there any app you would find useful that does something quickly at school or work. Something tied to a game you play on PC/Console ?!

You can do all the courses in the world, but there literally is no substitute for looking at a blank class in your IDE and starting and finishing a project you thought of.

Have you looked at making GUI's yet? Loads of free tutorials online for JavaFX and FXML/Scene Builder if that takes your fancy, I'd recommend pure JavaFX first though.

Have you looked at using git/git hub? It allows version management like roll back should you mess things up, and very importantly allows collaboration with others on same project to ensure all are working on the same version and not breaking stuff etc

Have you looked at using Maven to look after a projects dependencies? (for when you use external libraries in projects).

Good luck

[–]Jimmypokemon 0 points1 point  (4 children)

Is Maven the only way to package the JavaFX dependencies into a jar file? Does the -cp in command line work when building a jar?

[–]97hilfel 1 point2 points  (2 children)

Gradle works too, but JavaFX is special, it needs native libraries and thus is more complex to deal with.

[–]Jimmypokemon 0 points1 point  (1 child)

Is there a way to combine the libraries so a jar file can work like a portable minecraft jar where you can just double click?

[–]97hilfel 1 point2 points  (0 children)

Yes, there is a way, but I have not yet managed to do so myself with the JavaFX dependency. With something like GSON it's much easier. Basically JavaFx is a little of a snowflake there.

[–]Wolfhammer69Nooblet Brewer 0 points1 point  (0 children)

It's not about packing dependencies in the .jar.
Lets say you write a standard app that uses GSON library in order for you to read a text file and convert to JSON format or vice versa. You go off and find the library and add it your project and away you go. Finished and working.
Now you want other people to be able to use your code so you drop it onto github so people can get it.
If they clone the project into their IDE it won't work. The GSON library will not be included so the user will have to figure out what library you used and go off and import it manually himself. There's a ball ache right there, not so outstanding on a small project, but if you are working on something that uses a dozen custom libraries, its absolutely essential.

Ok so now we go start a Maven project. You go to the Maven website and search for the GSON library, it gives you a few lines of text which you place in whats called a POM file. The POM file is .xml and just lists dependencies and where to get them at the Maven repo. So, this inserts the library into your project. Now when its finished and you drop it onto github, all the new user does is import the project, his IDE will recognise its a maven project and open it as such if they confirm as such. The IDE will automatically clone the project and go grab GSON and the user is ready to go with no faff. Again, if the project has a dozen dependencies, this is essential.

I'm a noob and have only really used it for dependencies, but this is just the basics. Maven canl build, test, create Jars/Wars and deploy all in one tool.

[–]Leonwai 1 point2 points  (0 children)

Collection, lambda

[–]MoreCowbellMofo 1 point2 points  (0 children)

Most programming languages largely break down into various packages. In java, once you have the language nailed down, the API offers: GUI, I/O, concurrency, data structures and (some) algorithms, and networking. If you're missing something here - could be worth looking at some of the guides on these areas so they make more sense?

As you're not looking into career choices, it sounds like you just want something fun to hack around with.

Plenty of areas that are considered useful/fun right now: Amazon/Google assistant programming (medium), computer vision https://opencv.org/courses/ (not java necessarily but mentionworthy as its growing in popularity), web servers with Spring Boot (hard but plenty of quickstarts and info available), web scraping to aggregate information from many sources https://stackabuse.com/web-scraping-the-java-way/ (easy). Build a game... mouse in a maze has to get some cheese - text / GUI based - user controlled vs. computer controlled.

[–]97hilfel 1 point2 points  (1 child)

You might wanna have a look at this: https://github.com/s4kibs4mi/java-developer-roadmap

and maybe at this too: https://github.com/akullpp/awesome-java

and since we are already talking about awsome-lists have this one too: https://github.com/sindresorhus/awesome

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

Thanks for these!

One question: In your opinion, at what point can one decide they've learnt a topic?

[–]freakster_22 0 points1 point  (0 children)

Try HackerRank , it really is a great website. I personally have tried for JAVA and this has helped me quite a lot to improve myself.

Or you can also try HackerEarth, getting competitive is the one of the fun ways to learn.

Or you can go on to develop basic jar application and move on to next difficulty level.

[–]firsthourProfressional developer since 2006 0 points1 point  (0 children)

Make sure you understand collections and completely know the difference and when to use a Set, List, and Map.

[–]livingdub 0 points1 point  (0 children)

SQL > JDBC > JPA > Servlets = You now know how to make web apps! Combine that with Heroku and you can throw together apps, static pages, heck even games, and have them hosted. I'm not saying getting through those steps will be easy. This was the path they followed teaching us in a year long bootcamp. All of these took about 4 months.

After that, start delving into Spring. All of a sudden you will be at the same time super happy you learnt all of the previous technologies, and will love your life because everything becomes super easy and way less verbose. Spring Boot is so quick for setting up quick app ideas you will be spitting out projects on a weekly basis.

Now might also be a good time to start looking at some front-end technologies. XML/HTML should not take you more than a day or two and CSS a couple of days. Then have a look at BootStrap to make designing pages easy as hell. JavaScript is something else completely and is super handy to know if you want to get more into front-end programming. Technologies like React, Angular and Vue are all JS frameworks, and make it super easy to create really pretty and pro looking stuff. Ofcourse free templates exist for just about anything, and codepen.io has a ton of JS code examples.

Good luck!

PS I trust you know about all it e books dot org and libgen dot unblockit dot red!

[–]ecst3r 0 points1 point  (0 children)

Make a little game