식별자와 예약어

식별자 : 자바 프로그래밍을 하는데 필요한 구성요소들을 구별하는 이름.(예약어는 식별자가 될 수 없다.)

식별자를 정의하는 규칙
– 중간에 공백문자, %, # 등과 같은 특수문자들을 사용할 수 없다.
– 단, $와 _는 사용 가능하다. 이때 주의할 점은 $, _ 등의 사용가능한 특수 문자라도 식별자의 첫 문자로는 사용하지 않는다는 점이다.

클래스 : 객체를 만드는 데 꼭 필요한 설계도면과 같은 것. 속성과 동작을 통해서 하나의 객체를 만들기 위한 틀과 같다.
클래스를 생성하면 만들어지는 것이 바로 객체이다.

클래스를 정의하는 규칙
– 첫 문자는 항상 대문자로 표현한다.
– 하나 이상의 단어가 모여 클래스명으로 지정될 때는 단어의 첫 문자들만 대문자로 표현한다.

Variable(변수) : 하나의 값을 저장할 수 있는 기억공간.

Data type

  • 기본형 : 실제 값을 저장한다.
    boolean(논리-1byte), char(문자-2byte), byte(정수-1byte), short(정수-2byte), int(정수-4byte), long(정수-8byte), float(실수-4byte), double(실수-8byte)
    * byte : 이진데이터를 다루는데 사용.
    *short : c언어와의 호환을 위해 추가.
  • 참조형 : 객체의 주소를 저장한다.
    String, System 등 기본형을 제외한 나머지

변수의 선언방법

public class Variable01 {
	public static void main(String[] args){ 
		
		int number;
		number = 100;
		
		System.out.printf("number: %d\n", number);
		System.out.println("number: " + number);
		
	}
}

결과 :

number: 100
number: 100

Constant(상수) : 한 번만 값을 저장할 수 있는 공간.
literal(리터럴) : 그 자체로 값을 의미하는 것.

JVM(자바 가상 머신, Java Virtual Machine)

자바로 작성된 프로그램 코드는 컴파일러를 통해 ‘바이트코드(bytecode)’형식으로 변환된다.
이때 생성되는 파일이 class파일인데, 이 파일은 명령어 등 다른 보조적 정보들을 담고 있다.
이 명령어들과 정보들을 해석하여 실행하는 것이 JVM이다.

즉, Java의 실행파일이 Class 파일!
이 Class파일을 실행시키는 것이 JVM!

이러한 특징때문에 자바로 작성된 프로그램은 어떤 운영체제에서도 거의 수정없이 사용할 수 있는 것이다!!

JVM은 4개의 구조적 영역으로 구분할 수 있다.

  • 클래스 영역
    사용자가 직접 작성하는 클래스 코드를 저장하는 곳으로, import문을 통해 필요로 하는 클래스들이 로드되며 멤버 메소드들은 메소드 영역에
    상수들은 상수 풀에 저장된다.
  • 자바 스택(Java Stack)
    프로그램을 수행할 경우에 여러 메소드들을 호출하고 또는 관련된 정보들을 주고 받기도 하는데, 이때 이러한 일 처리들을 기록하는 곳이 이 영역이다. 각 메소드에 관련된 정보들은 메소드가 호출될 때마다 ‘스택 프레임’이라는 또다른 영역에 생성되어 기록을 하게 된다.
    가장 최근에 호출한 메소드의 스택 프레임이 가장 위에 존재하게 되는데, 이를 ‘활성 스택 프레임’이라고 하며, 수행을 다하게 되면 해당 스택
    프레임은 소멸되고 아래에 있던 스택 프레임 위로 올라와 활성화가 된다.
    항상 현재 활성화되어 실행중인 곳을 가리키는 커서와 같은 것이 있는데 이는 ‘프로그램 카운터’이다.
  • 힙(Heap)
    new라는 예약어를 통해서 객체가 동적으로 공간을 할당받는 곳이며 가비지 컬렉션이 관리하는 영역이다.
    물론, 생성된 객체는 ‘클래스 영역’에 해당 클래스가 존재해야만 공간을 할당받을 수 있다.
  • 네이티브 메소드 스택
    자바에서는 C언어와 같은 다른 언어의 기능을 잠시 빌려서 사용할 때가 있는데, 이때 사용하는 것이 JNI(Java Native Interface) 기술이다. 여기서 사용되는 네이티브 메소드들이 바이트코드로 변환되면서 사용되고 기록하는 영역이 바로 네이티브 메소드 스택이다.

Java Platform이란.

자바 프로그램이 실행되기 위해 제공되는 ‘하드웨어적 프로그램’으로, 자바 API와 JVM으로 구성되어 있다.

자바 API(Java Application Programming Interface) – 유용한 기능을 제공하는 많은 클래스와 인터페이스들의 묶움으로 패키지로 제공된다.

자바가상머신(JVM, Java Virtual Machine) – 물리적인 실제의 기계 장치가 아닌 추상적인 장치로 명령어와 레지스터의 집합, 스택, 힙, 메서드 영역 등으로 구성되어 있다.

자바 플랫폼의 종류

JavaSE
J2SE라고도 불리며, 자바의 표준이 되는 플랫폼이다.
일반적인 컴퓨터 환경의 응용 프로그램들을 개발하기 위해 제공되는 환경이다.
(J2EE나 웹서비스 등에도 제공할 수 있는 환경)

JavaEE
J2SE를 바탕으로 자바의 가장 많은 특징을 이용하는 환경이라 할 수 있다.
추가적인 툴이나 개발에 필요한 API들이 추가적으로 제공되고 있다.
(Servelet/JSP, XML 기술 등)

JavaME
가장 작은 환경이므로 주로 소형제품을 위한 플랫폼이다.
메모리 관리에는 최적화되어 있고 전원 처리, 내부 장치간의 입출력 기능 등 일정한 범위를 두고 제공된다.