1. Java Technology
 Java는 프로그래밍 언어이자 플랫폼입니다.

 1) Java 프로그래밍 언어
   Java는 아래 용어들로 특징지을 수 있는 고급언어입니다.
   - Simple
   - Architecture neutral
   - Object oriented
   - Portable
   - Distibuted
   - High performance
   - Multithreaded
   - Robust
   - Dynamic
   - Secure
  
 Java 소스코드는 .java 파일로 작성하며, javac로  소스코드를 컴파일하면 .class 파일이 생성됩니다. 해당 .class파일에는 컴파일한 프로세서에 대한 네이티브 코드가 포함되지 않고 JVM(Java Virtual Machine)이 해석할 수 있는 바이트코드가 포함됩니다. Java launcher는 JVM과 함께 만든 프로그램을 실행합니다.

Java 프로그램 개발 개요

 아래와 같이 컴파일러에 의해 만들어진 .class 파일은 여러 운영 체제에 설치되어 있는 JVM에서 대부분 동일하게 수행됩니다.

여러 운영체제에서 JVM을 통해 같은 프로그램이 실행됨


2) Java 플랫폼
 플랫폼(flatform)은 프로그램이 수행되는 하드웨어나 소프트웨어 환경입니다. Microsoft Windows, Linux, Solaris OS, Mac OS 가 대표적인 플랫폼입니다. 대부분의 플랫폼은 운영체제와 기본 하드웨어의 조합으로 설명할 수 있습니다.
Java 플랫폼은 다른 하드웨어 기반 플랫폼에서 실행되는 소프트웨어 플랫폼입니다.
 
Java 플랫폼은 JVM(Java Virtual Machine) 과 Java API(Application Programming Interface)를 포함하고 있습니다.
JVM은 Java 플랫폼의 기반으로 서로 다른 하드웨어에서 실행됩니다.
API는 프로그램에 바로 적용 가능한 유용한 기능들의 모음입니다. 해당 API는 class와 interface의 library로 묶여 있고 이것을 패키지(package)라고 합니다.

Java platform 개요

 Java 플랫폼은 네이티브 코드보다 느릴 수 있지만, 컴파일러와 JVM 기술의 발전으로 네이티브 코드에 가까운 성능을 제공합니다. 


2. Java로 할 수 있는 것
 1) Development Tools
   : 프로그램을 compiling, running, monitorning, debugging, documenting 할 수 있다.
 2) API
   : networking, security, XML generation, database access 등이 있다.
 3) Deployment
   : Java Web Start, Java Plug-in을 통해 배포할 수 있다.
 4) UI Toolkits
   : JavaFX, Swing, Java 2D로 GUI를 만들 수 있다.
 5) 통합 라이브러리
   : Java IDL API, JDBC API, JNDI API, Java RMI 등이 있다.


3. Java "Hello world"
 새로운 프로그래밍 언어를 배울때 관례적으로 접하는 "Hello World" 출력 프로그램을 Java로 작성해 보자.

/**
 * The HelloWorldApp class implements an application that
 * simply prints "Hello World!" to standard output.
 */
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}

 위처럼 HelloWorld라는 클래스를 정의하고 "public static void main(String [] args)"이라는 메서드를 작성한다. 프로그래밍 언어에선 "main()" 메서드는 조금 특별한데 모든 프로그램의 시작이 되는 부분이다.

JVM이 "main()" 메서드를 읽어들여 프로그램을 시작한다. public인 어디서든지 접근 가능하다는 뜻이고 static은 프로그램이 시작될 때부터 메모리에 올라간다는 뜻이다. 그리고 void는 JVM이 받는 리턴 값이 없다는 뜻이고 "String [] args"는 프로그램이 시작 시 입력받을 수 있는 인자가 저장되어 있는 곳이다.
"System.out.println()" 메서드는 Java에서 제공하는 기본 메서드로 콘솔창에 출력한다는 뜻이다.

간단한 프로그램이기 때문에 따로 개발환경이 설정되어 있지 않으면 아래의 온라인 컴파일에서 테스트할 수 있다.
https://www.tutorialspoint.com/compile_java_online.php

 

출처: https://docs.oracle.com/javase/tutorial/getStarted/intro/index.html