Java has been around for a long time and has been the driving force in the IT industry. Additionally, it’s one of the most popular and sustainable programming languages ever created. Its flexibility is unmatched as it’s used in virtually all domains of software development. Furthermore, Java is often used for building web applications, desktop applications, mobile applications, game engines, etc.
This course will help you build strong foundations by mastering the fundamentals of the Java programming language. Moreover, we will go over all the essentials and leave no stone unturned, in your path to becoming a successful Java developer.
Whether you’re starting from scratch or looking to reinforce existing knowledge, this comprehensive curriculum will ensure you build a strong foundation. After this course, you will be ready to pursue your career path as a Java developer.
You will have plenty of options in front of you. Additionally, whether you choose to build web applications, desktop applications, mobile applications, or all of them, as long as you have strong knowledge of the fundamentals, switching between different technology stacks is easy.
I’ve structured this course in such a way that lessons aren’t too long and get straight to the point. Furthermore, at the end of each section, there is a quick recap, quizzes, and coding exercises. None of the exercises are mandatory, but I encourage you to try them at least once.
There is already plenty of free learning material out there. However, it’s easy to get lost and stuck, not knowing where to go next. Java fundamentals learn Java basics course is well-structured and covers the whats, whys, and hows, all in one place
Windows and Mac
You can download the Java Development Kit (JDK) at: https://www.oracle.com/java/technologies/downloads/
I recommend downloading the latest suggested version.
Ubuntu
To install the JDK on Ubuntu, you can use apt. Here is a good guide by Linode:
https://www.linode.com/docs/guides/how-to-install-openjdk-ubuntu-22-04/#how-to-install-openjdk
If you want to use multiple versions of Java, follow this guide:
https://aboullaite.me/switching-between-java-versions-on-ubuntu-linux
Fedora
On Fedora you can use dnf to install OpenJDK:
https://docs.fedoraproject.org/en-US/quick-docs/installing-java
OpenSUSE
On OpenSUSE the installation is more complicated due to Oracle's licensing issues. However, it's not impossible and OpenSUSE provides a guide on how to install Java:
https://en.opensuse.org/SDB:Installing_Java
Arch Linux
Arch Linux has a utility for easily installing Java:
https://wiki.archlinux.org/title/java
RHEL
On Red Hat Linux you can install Java with yum:
https://access.redhat.com/documentation/en-us/red_hat_build_of_openjdk/21/html/installing_and_using_red_hat_build_of_openjdk_21_on_rhel/installing-openjdk11-on-rhel8_openjdk
Gentoo
To install Java on Gentoo, you can follow these instructions from their wiki page:
https://wiki.gentoo.org/wiki/Java
Flatpak
Official Flatpak image: https://flathub.org/apps/com.jetbrains.IntelliJ-IDEA-Community
flatpak install flathub com.jetbrains.IntelliJ-IDEA-Community
Snap
Official Snap image:
sudo snap install intellij-idea-community --classic
https://snapcraft.io/intellij-idea-community
AppImage
Not available at the time of me writing this.
Manual Install
Download .tar.gz file from the IntelliJ IDEA website, unpack it, and you will find instructions setting everything up. https://www.jetbrains.com/idea/download/?section=linux
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/01_getting_started/03_our_first_java_project.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/01_getting_started/04_java_architecture_overview.md
The source code (and more) can be found in my public GitHub repository:
https://github.com/bezbos/complete-java-course
You can find me on the following platforms (no links due to Udemy rules, so I've placed my username or name):
YouTube: bezbos
LinkedIn: Boško Bezik
Medium: bezbos.
GitHub: bezbos
StackOverflow: bezbos
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/02_data_types_and_variables/01_variables.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/02_data_types_and_variables/02_final_variables.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/02_data_types_and_variables/03_expressions_statements_blocks.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/02_data_types_and_variables/04_comments.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/02_data_types_and_variables/05_primitive_types.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/02_data_types_and_variables/06_floating_point_and_big_decimal.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/02_data_types_and_variables/07_strings.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/02_data_types_and_variables/08_string_escape_sequences.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/02_data_types_and_variables/09_formatting_strings.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/02_data_types_and_variables/10_multiline_strings_text_blocks.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/02_data_types_and_variables/11_primitive_type_casting.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/02_data_types_and_variables/12_conversion_between_strings_and_numbers.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/02_data_types_and_variables/13_var_typename.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/02_data_types_and_variables/16_compile_time_vs_runtime.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/02_data_types_and_variables/14_default_values.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/02_data_types_and_variables/15_literals_and_literal_formatting.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/03_operators/01_arithmetic_operators.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/03_operators/02_advanced_arithmetic_operations.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/03_operators/03_logical_operators.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/03_operators/04_operator_precedence.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/03_operators/05_bitwise_and_bitshift_operators.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/04_arrays/01_arrays.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/04_arrays/02_multidimensional_arrays.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/04_arrays/03_array_methods.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/05_conditional_statements/01_if_statement.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/05_conditional_statements/02_reading_console_input.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/05_conditional_statements/03_switch_statement.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/05_conditional_statements/04_switch_expressions.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/06_loops/01_while_loop.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/06_loops/02_do_while_loop.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/06_loops/03_for_loop.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/06_loops/04_break_statement.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/06_loops/05_continue_statement.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/06_loops/06_processing_arrays_with_loops.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/06_loops/07_enhanced_for_loop.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/07_effective_coding/01_extracting_methods.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/07_effective_coding/02_effective_naming.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/07_effective_coding/03_refactoring.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/07_effective_coding/04_avoiding_code_duplication.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/07_effective_coding/05_magic_strings_and_numbers.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/07_effective_coding/06_effective_commenting.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/07_effective_coding/07_code_formatting_and_style.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/07_effective_coding/08_version_control_and_collaboration.md
Source code:
https://github.com/bezbos/complete-java-course/blob/main/01_java_fundamentals/07_effective_coding/09_effective_documentation.md