Lesson Weekend

Welcome to Java! Your learning path to Java development begins here.


Java is an object-oriented computer programming language that was created by James Gosling at Sun Miscrosystems in 1995. One of the main features of Java is that it was designed to minimize dependencies so that it could be run on any platform that supports Java - that means that Java could run on a Mac or a PC without requiring separate programming. The goal was to allow Java developers to "write once, run anywhere" (WORA).

Despite being an older programming language, it is still one of the most popular, versatile and widely-used languages in existence. According to the TIOBE index, which tracks the popularity of programming languages, Java is the number one most popular programming language used today. It was named “Programming language of the year” in 2015 - the same award that it was given ten years earlier, as well!

And furthermore, many languages are similar to Java or extend Java’s reach, such as Scala, Groovy, Clojure, and Kotlin, make it a fantastic foundational programming language to learn.

Who Uses Java?

Due to its longstanding reliability, Java can be found in just about every industry, making it a popular choice for developers looking for stability and scalability. It has high levels of support for pretty much any database, and can be implemented with both a lightweight micro-framework (such as Spark, which we will be using in this course) as well as heavy lifting backends for large apps and servers.

Because of these traits, it was chosen by Google to be the primary language of Android, but many large companies rely on Java as their programming language of choice:

Twitter, Square, Spotify, Facebook, Salesforce, eBay and, of course, Oracle, Hadoop, LiveRamp, Thumbtack, ZOZI, Evernote, Lithium Technologies, Oscar Health, PRactice Fusion, Klout, ZoomInfo, BetterCloud, Google, Accenture, Capital One, Intel, Symantec, Philips, Thomson Reuters, Target, CenturyLink, T-Mobile, eBay, Groupon, New Relic, Nielsen, Uber, Spotify, Chegg, Yelp, Okta, Slack, Opower, Zillow… all of them use Java.


In this course we'll focus on the fundamentals of programming web applications using Java and the web framework Spark. Working with Java and Spark, we'll use the MVC pattern of web development, where a program's core logic is written in its models (Java classes). Most excitingly, we will learn how to create a basic API backend with Spark, Java, and a Database called Postgres. As we move through the program, we will learn more about building client apps that query these Java based backends. At the end of your time at Epicodus, you will have learned how to build a simple server side backend, a frontend, and a mobile app, as well as styling.

Important Notes on Curriculum

This course is intended to give you a broad overview of Java and Web Development with Java, as well as programming in general. To this end, you’ll see that each week has several lessons outlined as "Big Topics" - these are dense, high level introductions to important programming concepts. Be sure to take your time following through these lessons, as they are a peek at more abstract, computer sciencey approaches than strictly getting the job done any which way.

Adhering to concepts, patterns and conventions introduced in these lessons will ensure that you are following best practices as a developer when you leave Epicodus, and can hold your own amongst peers with more traditional technical backgrounds, even if they seem complicated at first.

Additionally, because Java and Java lessons can be hard to follow, this curriculum is fairly heavily annotated with //comments to illustrate key moments and concepts. Feel free, in fact, feel encouraged, no...feel instructed to delete these comments from your own code as you become more sure of yourself. Know that many developers do not comment their code as heavily as you will see in this course, and may penalize you for having heavy comment use. (Our comments are for demonstration purposes only!)


Since you already have experience with basic programming and Behavior Driven Development from Intro, you’ll be pleased to hear that basic Java has quite a lot in common with basic JavaScript, and BDD principles will be applied the same way. Many variable types, operators, and ways of writing basic objects and functions (called methods in Java) are quite similar, although there are important distinctions between Java and JavaScript. But don’t worry - it’ll soon become second nature to understand how each language is different, and what this means for how we structure our programming!

Let’s get started!