Skip to content

Latest commit

 

History

History

README.md

Java

Java is an unusual language. It is a strongly typed, compiled, object-oriented language that runs inside a virtual machine. Let's cover what all that means.

When a language is strongly typed, it means that you must declare, in advance, the type of data stored into any variable. We'll cover this more in the basics.

A compiled language means that you must run a process to change your code into "byte code" or 0's and 1's that the computer understands.

A virtual machine is a computer within a computer that provides functionality. It acts as a layer of abstraction between your code and the operating system (OS). This means that you don't need to worry about if your code works on Windows or Mac or Linux. The virtual machine handles the OS-specific stuff for you.

By compiling Java and running it inside a virtual machine, you achieve the performance gains of a compiled language (vs an interpreted language) and the the simplicity of writing code once that works on all platforms.

Java is also object-oriented. Object-oriented programming is a way of thinking about and organizing code that makes things easier for developers to understand. Data is organized into "objects," which makes things less abstract when thinking about data and actions and provides many benefits, covered in the theory section.

For these reason, Java is a language of choice among many larger, "enterprise" businesses. It's a language of choice taught in many traditional universities and is generally considered a solid foundation to get new developers started.

Advantages:

  • Performance due to being a compiled language
  • Portability due to running in a virtual machine
  • Object-oriented, making it appropriate for larger applications
  • Huge standard library that handles a lot of work for you

##Disadvantages:

  • Long startup time and a good bit of overhead due to the need to boot and run a virtual machine
  • Huge standard library that sometimes may be difficult to find what you need
  • Garbage collection can cause issues if not configured properly
  • Slightly slower development pipeline, as you need to compile your source before running it

Example Order

Items labeled WiP (work in progress) are incomplete examples.

Java Programming Basics

  • HelloWorld
  • Variables
  • Methods
  • Conditions
  • Loops
  • BasicDataStructures
  • Classes
  • Inheritance
  • Scope (WiP)
  • Overriding
  • Overloading (WiP)
  • Interfaces (and Polymorphism)
  • AbstractStatic (Abstraction and Statics)

Real-World Applications

  • Maven (WiP)
  • Databases (WiP)
  • JSP (WiP)
  • Servlets (WiP)

Data Structures

  • Stack (WiP)
  • Queue (WiP)
  • LinkedList (WiP)
  • Graph (WiP)
  • Tree (WiP)
  • HashMap (WiP)
  • Set (WiP)

Basic Algorithms

  • BubbleSort (WiP)
  • InsertionSort (WiP)
  • MergeSort (WiP)
  • QuickSort (WiP)
  • BinarySearch (WiP)
  • BreadthFirstSearch (WiP)
  • DepthFirstSearch (WiP)

Design Patterns

  • Wrapper (WiP)
  • Factory (WiP)
  • Command (WiP)
  • Singleton (WiP)
  • Builder (WiP)
  • Decorator (WiP)
  • Facade (WiP)