Skip to content
This repository was archived by the owner on Dec 1, 2022. It is now read-only.

Latest commit

 

History

History
24 lines (17 loc) · 2.28 KB

File metadata and controls

24 lines (17 loc) · 2.28 KB

Java is an open-source, object-oriented programming language. It has been one of the most popular programming languages in the world for nearly two decades, and is used in a wide variety of contexts including web, desktop, and mobile applications. It is also frequently used in embedded devices and as middleware, in the corporate setting.

Java is considered to be a “classical" object-oriented language, and is typically the first object-oriented language that computer science students will learn in the college setting. It is statically-typed, and is built to be very secure and platform independent -- compiled Java bytecode can be run on any machine with an appropriate Java runtime environment. This is in contrast to other compiled languages such as C++, which must be compiled on the native architecture of a given system. “Write once, run anywhere" (WORA) is a maxim often used in the Java world.

You should first learn the basics of Java, including syntax and other language structures, and then object-oriented concepts. Then you should learn a web framework. There are many web frameworks available for Java developers, but Spring is currently the most widely-used.

Spring is a large and complicated framework providing many more tools than you'll be able to learn or master at this stage. Learn the basics of Spring Boot and Spring MVC in order to get a web application off the ground quickly, so you can focus on building, rather than configuring the framework.

Start with one of the Spring references provided, and then move on to the CS50 Finance for Java project.

Tasks

  • Learn Java language basics, or “procedural Java"
    • Basic syntax
    • Types
    • Control structures (loops and conditionals)
    • Access modifiers
  • Learn object-oriented concepts
    • Classes: properties and methods
    • Polymorphism, inheritance, encapsulation
  • Learn the basics of Spring MVC and Spring Boot

Time Commitment

The time to learn these tasks can be highly variable, depending on which resources you use, how many hours per week you are able to devote to learning, and what type of support you have (online via message boards, in-person at meetups, etc). Focus on learning all of these topics, rather than hitting the specified number of hours.