Hi, I'm not 100% sure if this belongs here, if it doesn't I can delete this post and ask on a different sub.
So, I just got hired as a Java Backend Developer for a big company and I'm not sure what I should be learning before I start (my first day will be April 4). I know Core Java, it's syntax, Collections, Streams. I also know how to build very basic REST APIs with Java Spring, relational and non-relational databases, a bit about Design Patterns (like Singleton, Strategy, Observer).
Is there something that I should learn before my first day there? I will be getting a 2 month training before starting on real projects, but I still want to know as much as possible before starting.
The company is a big E-Commerce and Fintech company that's probably the biggest tech company in Latin America. I don't know yet to which project I will be joining, I will know after finishing the 2 months training.
First off, I'm admittedly a Java fanboy, although I did some little programming in PhP, Javascript, and Python, and looked at a bunch of others, I really cannot see languages the way I do Java. From the syntax, to the libraries, I love every little thing about this language, that I tell my friends things like: "Programmers want to write programs, I want to write Java programs" and "If it can't be written in Java, it's probably not worth writing". My ears are deaf to all the debate about: "oh you have to be flexible, and know x and y".
But then ever since I started reading, I've been hit with Oracle's reputation.
And correct me if I'm wrong, but here's what I think Java's (slight) fall from grace, played out:
-
Java reigned supreme in the browser, esp, after the dust of the dot com bubble settled.
-
Someone found a vulnerability (or two?) in applets (around 2009?) that affected the ton of sites that ran Java.
-
Google, which had been pushing hard to become from a search engine, a browser, disabled Java by default in Chrome...and you know, given the "power of default", programmers pivoted to Javascript, because it was disruptive to have average people download an updated Java + enable it.
-
Oracle, being as litigious as ever, wanted to get back at Google, by removing some internal code Android required from Java, making support for Java 9 not possible (although Java 9+ can be used, with some features not being available).
-
Oracle then sued Google claiming they should've paid them for using Java in Android.
-
Google won the case, and pushed Kotlin and Flutter as the primary means of writing Android programs.
Now, resources; books, tutorials, never use Java for Android programming, and other languages developed frameworks, servers, etc. that ate (a chunk of) Java's lunch.
After most major/seminal books in the field used to use Java for example codes, newer books and editions of said books switched to different languages. (e.g. Martin Fowler's Refactoring comes to mind: Java -> Javascript).
Between 2000, and 2010, authors of major libraries:
- Kent Beck, author of xUnit (originally in SmallTalk).
- Doug Cutting, author of Lucene, which gave birth to elastic search, and inspired other IR libraries...plus pretty much all of Apache Software, were automatically either written in or translated to Java.
Meanwhile now, while efforts of developers of the JDK, and the countless major Java frameworks, can't be dismissed by any means, the community just sounds ...quiet. Even here, Java-related sub-reddits are pretty inactive compared to dotnet/python subreddits.
So, senior devs of the early 2000s, curious to know what your thoughts on Java's journey so far, and possibly its future?
Hello r/learnjava!
I am new to the world of programming and I have been learning Java in school as part of my CS degree. I like learning Java and I would like to expand my knowledge into something marketable for a career. what else do I need to learn to be successful?
Honestly, clean code and how to write good tests. I'd also second SpringBoot and some SQL.
It's useful to know other programming languages but not what I'd focus on before you're proficient with your first.
stick to java and learn it properly. maybe do a certificate or build side projects to show something to your future employer.
if have something that shows your java skills, maybe learn some basics about SQL, Web Development, Game Development, whatever you are interested in and keeps you motivated. It's hard to predict what you will need in the future.
Maybe take a look at APIs/Microservice and Agile Software Development. I just finished studying and now i work as a Java Developer and these things i needed to learn. But i would stick with Java as a language. If you know one language properly, you can learn others easily and as needed.
Hey!
I graduated with a CS degree a year back and I have worked for over a year in C# and .NET.
I have learned both C# and Java in college.
I want to become proficient in particular language or area. I was initially leaning towards C# itself, since I have a year of experience in it, I thought I could learn some of the popular frameworks like ASP .NET and database related components like LINQ.
However i have read that Java has a broader job market compared to C# and since it has been OS agnostic and has been here longer than C#, there are more opportunities for it.
A few questions:
Purely in terms of securing a job, would it be more beneficial to start learning Java and it’s associated frameworks instead of C#?
What are some popular frameworks I can learn? I have heard about spring, spring boot, but if anyone can give a detailed explanation about the framework, database related components, the order in which I can learn them, and any suggested course / material, it would be really helpful.
PS. I know it isn’t good to tie myself to a single language but this is just for the beginning stage so I can secure jobs more easily.
Thanks so much!
I been a dev for about 10 years and I've mostly worked with Javascript (react, node) and ruby (ruby on rails.)
My degree was the "java track" so 90% of the coding was in Java and I had to build applications using Spring Boot. So I put Java in my profile and resume.
I been applying for jobs and every single one was interested in me knowing Java. They wanted a Java dev. Apparently since I already haven't used Java in production.
So... what's the deal? I'm already currently learning other skills to skill up like AWS, but it sounds like Java devs are in such need, it might be worth it to spend 3-6 months to sharpen those skills, learn the specific tools in the ecosystem, etc...
So are Java devs in high demand right now?
I've been learning Kotlin recently and have taken an interest in the JVM ecosystem.
My background is a Full-Stack Web Developer focused mainly on React, Node.js, Express, and MongoDB/PostreSQL.
If I were to move to Java, what kind of applications would I be building with it?
How is a Java job different from what I'm currently doing?
Is it worth learning?
I've heard its VERY verbose, but I've also heard recently that there's been some good changes to it? Would love to see any articles or videos talking about these changes that would demonstrate previous code to the new code.
Any tips or insights on what your companies are cresting with Java or what your Java job is like would be highly appreciated.
Thanks in advance.
I'm interested in java development, and have been looking at various jobs/careers - esp. android development (but I'm open to learning more to keep myself from being pidgeonholed). How's life and work on the daily for you? Where are you headed in 5 years? Any advice to give to a student to have a great career upon graduation? Anything we should learn extensively?
I have about 9 years experience coding Java and currently work as a Software Architect.
My first job was a graduate positions building a large back-end system for around 2 years at a big company. I learned a lot here from other experienced developers. Use this time wisely as you can getaway with asking a lot more questions as a graduate. This was also the hardest job to get and also the only one that asked about my degree.
The first job is more important than your grades at university. I know a head of engineering that has no degree and just went straight into coding at a young age. A lot of the coders you will meet just have a passion for coding and learn in their spare time. My degree mark was rubbish, and I really struggled with getting the first job but after that it didn't matter. I did work hard outside of work to learn as much as I could, getting advice on what to read to make me a better developer.
After about 5 years I moved to a senior position. I actively asked "what did I need to do to get a senior position and pay". Took me 6 months to get with 2 rounds of pay rises. This worked well for me and was a great step to getting much better pay. I guess the lesson here is that you should always be aware of what your skills are worth and ask for what you want (without being threatening) otherwise you probably won't get it.
How's life and work on the daily for you?
Life and work like others have said depends on a lot of factors other than coding Java but I for the most part quite enjoyed work. The big thing for me is the people. I've noticed most people can handle having to work on shit projects but time and time again I see people leaving because they want to get away from other people they work whether that is the manager or a college. There should always be a balance between work/fun. Also I've never worked at a large bank before as they will work you from 8.30am till 7pm without fail. Currently I won't do more than 7 hours a day which I think is reasonable.
Where are you headed in 5 years?
Technical Management if possible. Definitely pays more and also feels like you have a lot more say in the direction for the company. I think that after 9 years I've not got the same passion for writing code anymore.
Anything we should learn extensively?
Design patterns. https://www.amazon.co.uk/Head-First-Design-Patterns-Freeman/dp/0596007124
Software Architecture https://leanpub.com/software-architecture-for-developers
Algorithms http://algs4.cs.princeton.edu/home/
A good knowledge of the above and how to apply them will separate you from the rest of the crowd. There are many other books that you should read on top of this but too many to list here.
And of course a good knowledge of Java 8 & Spring Framework.
Lifestyle depends heavily on who you work for and where. Do you want to work somewhere near to home? Do you want to work for a big name company? Do you like living in a big city or a smaller city? Do you mind spending more of your pay on living expenses or do you want to save up? All of these factors will have an effect on your lifestyle.
You can get Java development jobs in many different places so there is a lot of flexibility when looking for jobs. Even in non "tech" cities, there are many industries that require software development skills, so it really all depends on where you look.
For having a career, there are typically two ways to go (up) in software development, either in people / project management or in technical expertise. If you want a lasting career, you have to actively push yourself forward towards those paths.
If you are more technically minded, make sure you keep learning actively. Actively pursue knowledge of new technology, and as you say, don't pidgeonhole yourself. You may not get to try out everything new on the job, but be aware of it and be willing to dive into something new when given the opportunity.
As far as motivation, software developer jobs pay well and are currently in demand, so if you want to pay off your student loans, there is your motivation! Who knows what the future will bring, but that is how things stand at the moment.
Obviously I need to know the basics like control-flow. I would also need to know Collections, input/output, classes, polymorphism, inheritance, records, abstract class, interfaces and so forth. What else do I need more than that? java.net package? JavaFX? Springboot? Serverlets? A comprehensive list would be nice.
Hi everyone,
I recently got a bachelor in The Netherlands for my study 'Business, IT & Management'.
I'm looking for a job for a few months now but it is very hard. Ideally I would like to have a job in 'functional management' or 'application manager'. Basically I would like to work between the layers of the 'business' and 'customers'. Basically finding requirements from the customers and translate them so the 'technical' folks can start making those things a reality. I have done 4 internships of 840 hours in these kind of jobs but it turns out I am still not experience enough and nobody will hire me for that. Got rejected around 8 times already.
There's a serious shortage of developers in the Netherlands. I got offered traineeships for Java/.NET probably 50 times but I refused each one of them because I don't really see myself coding behind a desk 40 hours/week.
I'm running out of time and am considering to accept a traineeship to become a Java developer. They will make me do a study to learn the Java basics in 2 months and will then become a 'Junior Java developer'. I will work next to a more experienced developer who will help me out when I need it.
Developing isn't really my passion though, but maybe I am underestimating the job? Is it fun? How would a normal day look like?
I have a pretty good knowledge of php, sql, css, html, xml etc. and a basic knowledge of OOP.
Do you think I should take a traineeship to become a developer? I won't mind doing it for a couple of years but at the end I'd still like to end up doing a projectmanagement/consultancy job. I'm scared that if I take this job I'll end up being a developer forever.
The language is not that important. It' won't be fun just because you use Java instead of C#. It's always about the project and the people you're working with. (You should have probably posted this in r/programming)
Do you like solving technical problems? You should give it a try (but keep looking for other job options). Having some programming experience will help you later when managing software projects. It's much easier to manage developers if you actually understand what they're doing. Also working in the field might help you to get connections which might help you to get a PM job.
No offense, but I worked with guys facing customers who a) had no interest nor experience with IT b) needed to sell IT services to clients, because it was their job.
Speaking from an engineer's perspective, I would do everything to not get candidates like this hired.
As the fun part of your question goes, I don't think anything is really fun, unless you make it fun. So if you're picking a company for your training, I would recommend going there and see how people are, do they care for their job, how they talk to each other, how informal are the conversations, even the office plan. But most importantly see that they need you.
Good luck.
Hello everyone,
As the title says, I'm learning Java to become a junior Java developer in the next 6-8 months.
My game plan is to finish codegym.cc which provides about 300- 500 hours of practical coding. Give I plan to finish this in 2 months (fortunate to have a job that allows me to spend the majority of 8 hour shifts working on what I want and time after work as well as before.) Averaging around 6 hours a day studying with breaks.
My plan afterwards is as followed:
-
Harvard CS50
-
Spring, Hibernate, and possibly Javascript + Angular
-
Read up on SOLID, Design Patterns, and read Clean Code + Effective Java
-
Work on a few personal projects (still brainstorming ideas but it's hard to come up with much)
I currently have a Bachelor in Information Technology and work Helpdesk. I plan to move to San Diego from a rural area in Florida in hopes of finding a position.
Is 6-8 months actually possible to become a junior java developer? If so, is my plan enough to make me competent enough to explain to a hiring manager that I know what I'm doing?
I appreciate any feedback.
I am starting a new job working at a bank, and they use Java/Maven/Springboot for everything.
I am knee-deep in research and beginner courses on youtube/MOOC.fi.
I just want to know if I put my all into learning everything I can, should I be able to guarantee myself a full (35 years) career using these technologies?
I have only ever worked with C, Python, PHP, JS, Typescript, React and React Native so far in a professional setting.
I am willing to put in the work and go deep into learning everything I can, but at this point I don't know if I have the willingness to keep doing these deep-dives in so many different technologies.
Can Java be the last stop for my learning journey? I am tired of feeling like a jack of all trades, master of none.
Any key tips will be appreciated! Also, if you are going to say practice please expand on it, thanks!
I've had some experience with Python by learning from Codecademy and my older brother who took computer science at ISU. In my opinion, Codecademy doesn't teach very realistically. Like, "Hey, here's what you could do. Now replicate this." I had a hard time learning from it. After playing Minecraft and seeing some Java development and the power and versatility of Java, I'd like to start delving into what Java has to offer. To save me time, I want to know, what's the best place to go to to learn Java programming efficiently and thoroughly.
BTW I'm a high-schooler, so "Go to college" is not an option at the moment. xD
http://mooc.fi/courses/2013/programming-part-1/
Complete Part 1 and Part 2 of this course. Seriously, I've been trying to learn Java for the past 3 years and I've tried every resource out there. The only one that is working for me is this course. It's created by the University of Helsinki (the college Linus Trovalds went to), which is one of the most respected CS programs in Europe.
This course will truly make you proficient in Java and you will also learn OOP concepts and will get lots of practice
Edit: I'm a high schooler too! If you have any questions or just wanna chat, feel free to PM me.
I'm starting to learn Java right now too and what worked for me was buying book on Java. That way I can have all the info I need in front of me and skip the parts I already know. I'd recommend "Java for Dummies" it is very easy to follow along while not being too watered down.
I have been using vscode for python, but now in school they are going to teach us POO in java, so i woder if a can keep using vscode or is a better option like netbeans or eclipse.
Seriously. I don't mean to sound critical, but I am curious as to why it's so popular. In my experience--which I admit is limited--Java apps seem to need a special runtime environment, feel clunky and beefy, have UIs that don't seem to integrate well with the OS (I'm thinking of Linux apps written in Java), and seem to use lots of system resources. Plus, the syntax doesn't seem all that elegant compared to Python or Ruby. I can write a Python script in a minute using a text editor, but with Java it seems I'd have to fire up Eclipse or some other bloated IDE. In python, I can run a program easily in the commandline, but it looks like for Java I'd have to compile it first.
Could someone explain to me why Java is so popular? Honest question here.
As java developer by occupation I would not say it is "extremely" popular.
Among the beginners Python is surely spread more widely.
Plus, the syntax doesn't seem all that elegant compared to Python or Ruby.
Yes, the "verbosity" of java syntax is often blamed. Mainly it grows out of type-rigidness.
but it looks like for Java I'd have to compile it first
Surely, while it is really cross-platform, as Python, Ruby or PHP it is not scripting language but uses compilation, as C#. The main goal is to increase performance - you can easily compare it yourself and find out that programs in java have 5-10 times better speed.
Of course they are not as speedy as with C++ which compiles to native-code - but at this level you lose cross-platformness (though C++ code could be written "portable" with more or less efforts).
Java apps seem to need a special runtime environment
But Python and PHP and Ruby also run in their own "virtual machines"- their interpreters. Their footprint really is smaller but not significantly ;-)
Any language which does not compile into native code requires some kind of interpreter of course.
I can write a Python script in a minute using a text editor, but with Java it seems I'd have to fire up Eclipse
I can write java problems using a text editor too. BTW I often use http://ideone.com for small programs. IDE becomes important when your project have several dozens to several thousands files.
So it is just a matter of practice.
Concluding I'd say that it is just the matter of what you are writing. I.e. proper instrument should be chosen for each task.
For learning purposes I dare not recommend java. It has a "steep learning curve" etc. I sometimes use Python myself for small snippets of code to test some idea etc.
For my small site I preferred PHP. Though I know Java better, I also know that it will take about twice more time from me :)
And for large-scale industrial server-side projects - enterprise applications etc. - it seems horror to me to use anything instead of java with tons of its free libraries in central repository, dependency management etc. Robustness of type system on other hand leads to smaller probability of mistakes (compared to time when I worked in C++ teams) and also makes refactoring in IDE work far better and more clever than in scripting languages.
Nevertheless I know there are still some important points which could be improved in java...
I'm a professional Java dev, these (IMHO) are the reasons Java is popular:
-
Java is easy to use. Strongly typed languages have the benefit that you know more at compile time; when you change a piece of code somewhere you haven't touched for a month the compiler will tell you if you try to stuff an int into a string. As a professional dev you will spend much more time reading code than writing it.
-
It's verbosity isn't an issue if you're beyond the beginner phase and actually let your IDE help you. I haven't written any getters / setters in ages.
-
It has some MAJOR commercial companies behind it; it's not just Oracle, IBM and Google are avid Java users and push it's developments.
-
Java has a huge open source ecosystem, in part thanks to all the big commercial corporations who open source a lot of the stuff they create.
-
Java is fast: the VM compiles the java bytecode to native code (many people think Java is an 'interpreted languae', that's wrong on many levels). Because the VM does this at runtime is has runtime information to optimize on. Static compiled languages don't have this benefit. It's amost as fast as a native C application, it's much MUCH faster than for example Python, Ruby or PHP.
-
It has a great mature tool ecosystem that handles stuff like building, continuous integration, testing, dependency injection and dependency management. In non-trivial application this saves you a lot of time.
-
It's ecosystem is very much alive and kicking. All those 'cool' things that are happening with Node.js are just as much happening in the Java world. On the VM we now have the Groovy scripting language and the Scala FP language. You can actually intermix Java, Groovy and Scala in projects if you want, using the best tool for each job. This all integrates into the existing toolset.
-
It has VERY good IDE's available; both Eclipse and IntelliJ Community are awesome and free.
I also use Python quite a bit for simple scripts. Mainly because I want to use it, I'm not really much 'faster' in Python than I am in Java. But one of the biggest reasons many universities use Java to teach programming is because it's a very strickt OO language. Python isn't. One of the things I dislike about Python is it's lack of explicit access modifiers; it uses a convention to hide members (double underscores) instead of having access modifiers. The reason is that it is faster to write, but IMHO that's not a good tradeoff. What's more important is if it's easier to read and there I much prefer private String projectId over just __project_id.
I really want to learn how to code using Java, I'm taking the beginning course of Java next year, in School, but I want to try to start using it outside of school so I'll be ahead of the game once school starts back up, so can any of you send me a link to download it and some tips to starting it?
Also, a couple notes on acryonms the messed me up years ago with getting into Java:
SDK: Software development kit, a general term for the basic bits to compile and run a program.
JDK: Java development kit, the SDK for Java. Basically this is the Java compiler (javac) and other bits for development.
JRE: Java runtime environment, needed to run Java programs (note the JDK includes this). This provides the JVM + standard Java libraries
JVM: Java Virtual machine, the actual thing that runs program.
IDE: integrated development environment. An advanced editor that helps program like Eclipse and Netbeans.
bytecode: Java compiles to bytecode which runs in the JVM. The bytecode can then be run, unmodified on any OS that has a JVM (most do). (Note that this portability has limitations but don't worry about that now)
Java SE: Java Standard Edition - the core of Java
Java EE: Java Enterprise Edition - Adds a bunch of niceties for web programming so you don't have to build out all the plumbing. Use to be bad, recently updated to be good. Ignore for now.
Java FX: Sort of like Silverlight or Flash or something. Never used it.
API: Application Programming Interface. Don't know how much programming you know so high-level, the bits exposed to you as developer that you can use. For example, there is class called String. It has a method called equal(). That is part of the API.
Javadocs: API documentation. This documents what classes are in Java standard library and the methods in them. For the most part, they are very good. Where they lack is putting it all together. You can see how a method or class works, but often not which is the right way to use it or in combination with other classes and methods. Look for tutorials and ask for help at that point.
The current version is Java 7 (u5 means update 5, sort of like 7.5). Java 6 is still very prevent in the field, but for learning, either is good. So, as therantngnorwegian said, download JDK 7u5 + Netbeans, easiest to get started.
Good luck
So, you need a JDK and an IDE.
Download Java (NetBeans IDE recommended):
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Java API:
http://docs.oracle.com/javase/7/docs/api/
I always found it useful to start reading through my textbook ahead of class. Try the example code and then try to change it and see if it works like you thought it would.
Hello,
I started learning Java five months ago. I joined Udemy courses and tried to learn from YouTube and other Java Android courses, but I'm lost. I don't understand anything, and I don't know what to do. Do you have any advice?