Learn Java by writing real Java
Every exercise is compiled by the real javac 21 compiler and run by a Java virtual machine, both inside your browser, on your own device. The lessons of Java Programming I and II follow the University of Helsinki's Java Programming MOOC, with their own explanations and exercises; the extra modules after them are Java Arena's own.
All 59 modules are online: 54 following the MOOC (Java Programming I and II) and 5 extra modules of Java Arena's own, with 359 steps and 1077 challenges.
- Module 1: Printing
- Module 2: Reading input and strings
- Module 3: Variables and types
- Module 4: Calculating with numbers
- Module 5: Making decisions
- Module 6: Conditions and logic
- Module 7: Problem-solving patterns
- Module 8: Repeating with while
- Module 9: Loop conditions and for
- Module 10: Methods and parameters
- Module 11: Return values and the call stack
- Module 12: Finding bugs
- Module 13: Lists
- Module 14: For-each, list methods and lists in methods
- Module 15: Arrays
- Module 16: Working with strings
- Module 17: Classes and objects
- Module 18: Getters, toString and bigger classes
- Module 19: Objects in a list
- Module 20: Reading files
- Module 21: Designing classes and overloading
- Module 22: Primitive and reference variables
- Module 23: Objects working together
- Module 24: Lists inside objects
- Module 25: Separating the UI from program logic
- Module 26: Troubleshooting and unit testing
- Module 27: Procedural and object-oriented programs
- Module 28: Sorting and searching
- Module 29: Larger programs
- Module 30: Warm-up: recap of parts 1 to 7
- Module 31: Hash maps
- Module 32: Comparing objects: equals and hashCode
- Module 33: Grouping data with hash maps
- Module 34: Inheritance and abstract classes
- Module 35: Interfaces
- Module 36: Polymorphism
- Module 37: Streams and lambdas
- Module 38: Ordering objects: Comparable and Comparator
- Module 39: StringBuilder, regular expressions, enums and iterators
- Module 40: Class diagrams
- Module 41: Packages and imports
- Module 42: Exceptions
- Module 43: Writing files
- Module 44: Type parameters (generics)
- Module 45: Building your own list and hash map
- Module 46: Random numbers
- Module 47: Two-dimensional arrays
- Module 48: GUI: windows, components and layouts
- Module 49: GUI: event handling
- Module 50: GUI: multiple views
- Module 51: Data visualization
- Module 52: Drawing, images and sound
- Module 53: Project: an Asteroids-style game
- Module 54: Libraries, Maven and databases
- Module 55: Recursion Extra
- Module 56: Records Extra
- Module 57: switch, var and text blocks Extra
- Module 58: Pattern matching and sealed types Extra
- Module 59: Linked lists, stacks, queues and trees Extra
- All modules
Practice: Deathmatch drills, the daily challenge and a placement quiz.
Projects: larger programs built over several milestones.
Pro Track: after the course, projects to build on your own computer with a JDK 21, Maven and JUnit 5 tests.