# Java grundkurs

Nivå: beginner | Målgrupp: Programmerare | Förkunskaper: Praktiska kunskaper i något programmeringsspråk
https://www.ribomation.se/programmerings-kurser/java-grundkurs/

Denna kurs ger dig grunderna i språket och delar av det enorma standardbiblioteket, så att du snabbt kan
komma igång efter kursen med programutveckling på server-sidan.

Java är det största applikationsutvecklingsspråket och har utvecklats på ett imponerande sätt under de
två årtionden det har funnits.

Denna kurs ger dig grunderna i språket och delar av det enorma standardbiblioteket, så att du snabbt kan
komma igång efter kursen med programutveckling på server-sidan.

- Know the basic language components of Java
- Be able to write Java programs that use container types
- Understand the use of lambda expressions
- Be able to write programs that handle files
- Be able to create executable JAR files

#### Background and Overview
- Language evolution & Versions
- Editions & Distributions
- Vendors & Implementations
- Documentations

### 1 - THE LANGUAGE
The language syntax, data types and statements.

#### Compilation & Execution of a Java Program
- The syntax at a glance
- A typical Java program
- How to compile
- How to execute
- The directory structure of sources and classes

#### Data Types & Operators
- Line and block comments
- Identifiers
- Reserved words
- Variables
- Integral data-types and literals
- Floating-point data-types and literals
- Boolean
- Characters
- Strings
- Arrays
- Enums
- Arithmetic operators
- Assignment expression operators
- Relational operators
- Logical operators
- Conditional operator
- Printing to the console

#### Statements
- If statements
- While loops
- For loops
- For-each loops
- Break & continue
- Switch statements
- Imports of classes
- Reading data from the console

#### Functions
- Function declarations
- Static functions
- Overloaded functions

### 2 - CLASSES
Syntax and usage.

#### Class Syntax
- Data abstraction and the idea of classes
- Syntax
- Visibility
- Constructors
- Member variables
- Initialization
- Pointers in Java
- Pointer this
- Null pointers
- Function toString
- Static members

#### Extended Classes
- Extendable strategies and the idea of inheritance
- Syntax
- What do we mean by inheritance
- Creating sub-class objects
- Dynamic binding of function calls
- Usage of @override
- Final methods
- Abstract functions and classes

#### Interfaces
- The purpose of using interfaces in Java
- Interface constants
- Static interface functions
- Default interface functions

#### Exceptions
- What is an exception
- Throwing and catching exceptions
- Understanding the flow of control
- Stack traces
- Checked and unchecked exceptions
- JVM errors
- Standard exception classes

#### Inner Classes
- Static inner classes
- Anonymous classes
- Class constructors
- Anonymous constructors
- Function `finalize()`

#### Special Classes
- Enum classes
- Wrapper types
- Conversion functions
- Autoboxing
- Class `java.lang.Object`
- Class `java.lang.Class`
- Class loading

#### Generics
- Generic functions
- Generic classes
- Generic interfaces
- Type restrictions

#### Lambda Expressions
- What is a lambda expression
- What is a functional interface
- Basic syntax
- Various use cases
- Instance method reference
- Static method reference
- Constructor method reference
- Lambda oriented functional interfaces

#### Annotations
- What is an annotation
- Usage of annotations in various libraries
- Syntax
- Default values
- Single value attribute
- Specifing annotation placements
- Keeping annotations until run-time

### 3 - THE LIBRARY
The most used parts of the large standard library.

#### Text Manipulations
- String
- StringBuilder
- Pattern & Matcher
- Regex support in java.lang.String
- Class Formatter
- Class SimpleDateFormatter

#### Date & Times
- Date
- Calendar
- Typical idioms for date-time manipulations
- Overview of the date-time support in Java 8
- Calendar Builder

#### Collections
- Overview of interfaces and implementing classes
- List & Array-/LinkedList
- Map & HashMap & TreeMap
- Understanding the for-each loop
- Utility classes
- Ordering of objects
- Queue
- Iterator
- Class Properties
- Class PropertyResourceBundle

#### Input & Output
- Text-oriented I/O
- Reader & Writer
- File
- Typical I/O idioms
- Binary I/O
- Input-/OutputStream
- Serialization
- Class java.io.File
- Path & Paths
- Utility class java.nio.file.Files

#### Pipeline Streams
- What is a pipeline stream
- The anatomy of a pipeline
- Stream sources
- Bounded streams
- Aggregators
- Collectors
- Collection aggregation
- String element joining
- Understanding reduce()
- Function filter()
- Function map()
- Sorting
- Other filters

### 4 - DEVELOPMENT
Brief about how to develop Java applications.

#### JARs & DOCs
- Understanding JAR files
- Setting the class-path
- Packing a library into a JAR file
- Executable JARs
- Understanding JavaDocs
- Running javadoc

#### Build Tools
- What is a build toll
- Typical build tool tasks
- Evolution of Java build tools
- What is a dependency
- What is an artefact repository
- How to find 3rd party open-source libraries
- What is a Maven proxy server
- What is a Maven artefact repository server
- Contemporary development work-flow
- Brief introduction to Gradle

#### Application Types
- Applications with GUI
- Java Web Start
- Servlets & JSP
- EJB
- REST WS applications
- Tests
