From Zero to Java
A web site to learn Java.
I set this website to teach Java to whoever wants to learn it. As a programmer, I always found it frustrating that programming languages have a steep learning curve. When you are introduced to a programming language you need to master too many concepts at the same time so the learning process easily becomes tedious.
Also, classic methods to teach programming languages usually accustom the student with what is now considered bad programming practice. We, the programming community, are working hard to ban those practices, so why should we teach them to new programmers? Here are some of them:
Bad practice #1: Write code without tests
Before starting to program, a programmer should always have both a clear idea about what he/she needs to do and automated tests. If you don't have a formal test to check your progress, how can you tell if you finished your job?
Bad practice #2: Code without automated build
The build, the process to create a software product from source code, should be ready before code writing begins. All professional programmers use some sort of system to turn source code into a product. Your job is not done until your software is ready to be used by someone else.
Bad practice #3: Non-reproducible results
Programming is becoming a collective task. If you are not prepared to share your source code, you are not prepared to program. The programming environment should be such that another programmer can easily reproduce it. This is important because, during source code writing you will want to be able to pinpoint where your code is defective and your programming mates should be able to see the same defect on the same spot.
Our solution
In this course I address the above mentioned problems by applying modern programming tools, which are usually hidden from the beginners but that, in my opinion, should be familiar to all Java programmers from the very begin:
- Solution to BP#1: JUnit - I write the unit tests, you find a way to make the tests pass.
- Solution to BP#2: Maven - I write the build automation using Maven. You simply run the automation and everything should work fine. Students are free to check my Maven scripts to learn how they work inside.
- Solution to BP#3: Vagrant - We use Vagrant to run virtual machines for us. We program inside of virtual machines, so there is very little difference between the programming environment of two students, even if they have different operating systems on their computers.
At last, but not least, all contents are free software, licensed under the Gnu General Public License (GPL), which guarantees your right to fully use it without charge and, which is specially important for students, to have access to the source code of absolutely everything. Even the source code of this very page you are reading now is freely available here: https://github.com/aamm/02j/blob/master/site/src/site/apt/index.apt.
You can see the whole project sources in our GitHub page: https://github.com/aamm/02j/.
A warm welcome to the Java world! I hope you have fun!
Projects we support
This website was only made possible due to many free software projects which I thank. Here is a small list of such projects: