자바 개발자 일기 1일차

Shy·2023년 12월 27일

아이티윌

목록 보기
1/22
자바 프로그래밍웹 프로그래밍프레임워크
JavaHTML, CSS, JavaScriptSpirng
DatabaseServlet, JSP
MyBatis
1차 프로젝트2차 프로젝트3차 프로젝트
  1. JVM (Java Virtual Machine):
    • JVM은 '자바 가상 머신'으로, 자바 바이트 코드를 실행하는 엔진이다.
    • 플랫폼 독립성의 핵심: JVM은 다양한 운영 체제에서 자바 바이트 코드(.class 파일)를 실행할 수 있게 해줍니다. 즉, "한 번 작성하면, 어디서나 실행된다(Write Once, Run Anywhere)"는 자바의 철학을 실현하는 주요 구성 요소이다.
    • JVM은 바이트 코드를 기계어로 변환하며, 메모리 관리(가비지 컬렉션 포함)와 같은 시스템 수준의 작업을 처리한다.
  2. JRE (Java Runtime Environment):
    • JRE는 '자바 실행 환경'으로, 자바 애플리케이션을 실행하기 위한 모든 것을 포함한다.
    • JVM을 포함하며, 라이브러리, 자바 클래스 로더, 자바 명령어 실행 툴 등을 제공한다.
    • 사용자가 자바 애플리케이션을 실행하기 위해서는 JRE가 필요합니다. 하지만, JRE에는 개발 도구는 포함되어 있지 않다.
  3. JDK (Java Development Kit):
    • JDK는 '자바 개발 키트'로, 자바 프로그램을 개발할 때 필요한 모든 도구와 환경을 제공한다.
    • JRE를 포함하며, 추가적으로 컴파일러(javac), 디버거, 문서 생성기 등 개발에 필요한 도구들이 포함된다.
    • 자바 개발자라면 JDK를 설치해야 합니다. JDK를 통해 개발된 프로그램은 JRE가 설치된 어떤 시스템에서도 실행될 수 있다.

바이트 코드

바이트 코드(bytecode)는 자바에서 매우 중요한 개념이다. 자바의 바이트 코드는 자바 컴파일러에 의해 생성되는 중간 형태의 코드로, 자바 소스 코드(.java 파일)를 컴파일하여 생성되는 파일(.class 파일)에 저장된다. 이 바이트 코드는 자바 가상 머신(Java Virtual Machine, JVM)에 의해 실행되는 특수한 형태의 코드이다. 바이트 코드의 역할과 특징은 다음과 같다.

  1. 플랫폼 독립성: 자바의 주요 장점 중 하나는 플랫폼 독립성이다. 자바 소스 코드는 컴파일되어 바이트 코드로 변환되고, 이 바이트 코드는 다양한 운영 체제에서 실행될 수 있다. 이는 JVM이 해당 운영 체제에서 바이트 코드를 해석하고 실행하기 때문이다.
  2. 컴파일 과정: 자바에서는 소스 코드가 먼저 자바 컴파일러(javac)에 의해 바이트 코드로 변환된다. 이 바이트 코드는 .class 파일에 저장되며, JVM은 이 파일을 로드하여 실행한다.
  3. 보안 및 최적화: 바이트 코드는 보안 검사와 최적화를 위해 중요하다. JVM은 바이트 코드를 실행하기 전에 보안 검사를 수행하여 안전하지 않은 코드를 차단한다. 또한, JVM 내부의 JIT(Just-In-Time) 컴파일러는 바이트 코드를 더 효율적으로 실행할 수 있도록 최적화한다.
  4. 효율성: 바이트 코드는 하드웨어가 아닌 JVM에 의해 실행되므로, 하드웨어에 구애받지 않고 여러 운영 체제에서 일관된 성능을 제공한다.
  5. 이식성: 바이트 코드로 인해 자바 애플리케이션은 이식성이 높다. 즉, 한 플랫폼에서 개발된 자바 애플리케이션은 다른 플랫폼에서도 수정 없이 실행할 수 있다.

결론적으로, 자바의 바이트 코드는 자바 프로그램의 플랫폼 독립성, 보안, 최적화, 효율성 및 이식성을 보장하는 핵심 요소이다. 이는 자바를 다양한 환경에서 널리 사용되는 강력한 언어로 만드는 중요한 부분이다.

자바의 소스코드가 바이트코드로 변환된다는 것

자바의 소스코드가 컴파일되어 바이트코드로 변환된다는 것은 내가 쓴 소스코드가 더 낮은 레벨의 언어로 변환되어 컴퓨터가 어떤 운영체제이던간에 읽을 수 있다는 것이다.

자바 소스 코드가 컴파일되어 바이트 코드로 변환되는 과정은 다음과 같은 의미를 가진다.

  1. 소스 코드의 컴파일: 자바에서 작성한 소스 코드(.java 파일)는 컴파일 과정을 거쳐 바이트 코드(.class 파일)로 변환된다. 이 과정은 자바 컴파일러(javac)에 의해 수행된다.
  2. 낮은 레벨의 언어로의 변환: 바이트 코드는 인간이 읽기에는 다소 복잡하지만, 컴퓨터가 이해할 수 있는 중간 수준의 코드이다. 이는 기계어보다는 높은 수준이지만, 일반적인 프로그래밍 언어보다는 낮은 수준의 언어이다.
  3. 플랫폼 독립성: 생성된 바이트 코드는 특정 운영 체제나 하드웨어에 종속되지 않는다. 이는 자바 가상 머신(JVM)이 설치된 모든 운영 체제에서 동일하게 실행될 수 있음을 의미한다. JVM은 해당 운영 체제에서 바이트 코드를 읽고, 실행 가능한 기계어로 변환한다.
  4. 운영 체제 간 호환성: 이러한 방식 덕분에 자바로 작성된 프로그램은 Windows, Linux, macOS 등 다양한 운영 체제에서 수정 없이 실행될 수 있다. 이것이 자바가 "한 번 작성하면, 어디서나 실행된다(Write Once, Run Anywhere)"라는 슬로건을 가지는 이유다.

따라서, 자바 소스 코드가 바이트 코드로 변환되는 과정은 자바 프로그램의 이식성과 플랫폼 독립성을 보장하는 핵심적인 부분이다. 이는 자바가 다양한 환경에서 널리 사용되는 이유 중 하나이다.

설치링크

jdk8설치링크

이클립스2020-12버전-웹,자바 통합 엔터프라이즈 버전

이클립스 환경설정 변경점: UTF-8

최초의 코드

class Hello {
	
	public static void main(String[] args) {
		System.out.println("Hello");
	}
	
}
  1. 클래스 선언: class Hello는 'Hello'라는 이름의 클래스를 선언한다. 자바에서 모든 코드는 클래스 내부에 있어야 한다.
  2. 메인 메서드:
    • public static void main(String[] args)는 자바 프로그램의 시작점을 나타내는 '메인 메서드'이다.
    • public은 이 메서드가 다른 모든 클래스에서 접근 가능함을 의미한다.
    • static은 이 메서드가 인스턴스화 없이 클래스에 속하며 클래스 이름으로 직접 호출할 수 있음을 의미한다.
    • void는 이 메서드가 값을 반환하지 않음을 나타낸다.
    • String[] args는 메인 메서드가 받는 매개변수로, 문자열 배열이다. 이는 프로그램 실행 시 커맨드 라인 인자를 받는 데 사용된다.
  3. System.out.println() 문장:
    • System.out.println("Hello");는 콘솔에 "Hello"라는 문자열을 출력한다.
    • System은 자바에서 기본적으로 제공하는 클래스이다.
    • out은 표준 출력 스트림을 나타낸다.
    • println은 전달된 문자열을 출력하고 새 줄로 넘어가는 메서드이다.

간단히 말해, 이 프로그램을 실행하면 콘솔에 "Hello"라는 단어가 출력됩니다. 이 코드는 자바 프로그래밍의 기본 구조를 이해하는 데 도움이 되는 간단한 예제이다.

자바 프로그램의 컴파일과 실행 과정

저버 소스코드에서, 자바 컴파일러를 사용하여 바이트코드를 만든 후에 자바 가성 머신(JVM)에서 실행한다.

  1. 컴파일 과정
    • 소스 코드 작성: 먼저, 자바 소스 코드를 작성합니다. 이 경우에는 Hello라는 클래스를 정의하고 main 메소드를 포함하고 있다.
    • 컴파일러 사용: 소스 파일(Hello.java)을 자바 컴파일러(javac)를 사용하여 컴파일한다. 이 과정에서 컴파일러는 소스 코드를 바이트코드(Hello.class)로 변환한다. 바이트코드는 자바 가상 머신(JVM)에서 실행할 수 있는 중간 형태의 코드이다.
    • 바이트코드 생성: 컴파일이 성공적으로 완료되면, 동일한 디렉토리에 Hello.class라는 바이트코드 파일이 생성된다.
  2. 실행 과정
    • 자바 가상 머신(JVM): 컴파일된 바이트코드를 실행하기 위해 자바 가상 머신을 사용한다. JVM은 자바 바이트코드를 특정 플랫폼에 맞는 기계어로 변환하여 실행한다.
    • 프로그램 실행: java Hello 명령어를 통해 Hello 클래스를 실행한다. 이때 JVM은 Hello.class 파일을 로드하고, main 메소드를 찾아서 실행한다.
    • 결과 출력: main 메소드에 정의된 대로 화면에 "Hello"라는 메시지가 출력된다.

이렇게 컴파일과 실행 과정을 통해 자바 프로그램은 작성된 코드에서 실행 가능한 형태로 변환되고, 최종적으로 원하는 작업을 수행하게 된다. 자바의 이러한 특성은 다양한 플랫폼에서 일관된 방식으로 프로그램을 실행할 수 있게 해준다

n진수 표현

public class Ex05 {

	public static void main(String[] args) {
		// 십진수, 2진수, 8진수, 16진수
		int decimal= 10; // 변수타입, 변수명
		
		System.out.println("decimal : " + decimal);
		
		decimal = 20;
		
		System.out.println("decimal : " + decimal);
		
		int binary = 0B1010; // 0b, 0B 접두어 사용 - 자바 2진수값 표현
		
		System.out.println("binary : " + binary);
		
		int octal = 012; // 숫자0 접두어 사용(8진수)
		
		System.out.println("octal : " + octal);
		
		int hexaDecimal = 0Xa;
		
		System.out.println("hexaDecimal : " + hexaDecimal);
	}

}
profile
신입사원...

0개의 댓글