백엔드/자바

김영한의 자바 입문 - 1. Hello World

hyeinggg 2024. 1. 3. 20:00

새해 맞이 자바를 다시 배워보려 한다.

자바는 몇 년 전에 배웠었고 지금은 잘 쓰지 않다 보니 거의 까먹었다.

 

원래는 스프링 부트를 배우고 싶어서 김영한님의 인프런 스프링 로드맵을 시작하려고 했었다. 

그런데 자바는 기본적으로 알고 있다는 가정하에 진행된다고 해서 다시 자바에 입문한다. 

자바 역시 김영한님의 실전 자바 로드맵이 있어서 이걸 따라갈 것이다. 

 

앞으로 김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음 강의를 수강하며 배운 내용을 정리할 것이다.  

 

여기서는 섹션 1 Hello World의 내용을 정리한다. 

 

 

1. 자바 프로그램 실행

// HelloJava.java
public class HelloJava {
	public static void main(String[] args) {
    	System.out.println("hello java");
    }
}
public class HelloJava
  • HelloJava 클래스 생성
  • 클래스명은 파일명과 동일해야 한다. 
public static void main(String[] args)
  • main 메서드 생성.
  • 프로그램의 시작점
  • 자바는 프로그램의 시작점을 찾아 안에 있는 문장을 순차적으로 실행한다. 
System.out.println("hello java");
  • 값을 콘솔의 출력
  • 문자열은 ""로 감싸기
  • 문장 구분은 ;(세미콜론)

블록의 시작과 끝에 들여 쓰기를 한다. 스페이스 4번으로 들여쓰기를 하며 코드의 가독성을 높이는 관례 중 하나다. 

 

 

2. 주석

소스코드의 설명 또는 특정 코드를 실행하고 싶지 않을 때 사용한다. 

한 줄 주석(Single line Comment)
  • //로 시작한다. // 이 기호 이후는 모두 주석 처리된다. 
여러 줄 주석(Multi line Comment)
  • /*로 시작해 */로 끝난다. 

추가로 코드를 자동으로 생성해주는 Intellij의 단축어도 강의에 나왔다. 

  • psvm + Enter : public static void main(String[] args) {}
  • sout + Enter : System.out.println();

 

3. 자바란?

자바는 표준 스펙구현으로 나눌 수 있다. 
  • 표준 스펙이란 자바를 어떻게 만들어야 하는지에 대한 설계도이며 문서이다. 표준 스펙을 기반으로 여러 회사는 실제 작동하는 자바를 만든다. 자바 표준 스펙은 자바 커뮤니티 프로세스(JCP)를 통해 관리한다. 
  • 구현은 자바 표준 스펙에 맞춰 여러 회사에서 실제 작동하는 자바 프로그램을 개발하는 것이다. 각 회사의 자바에는 장단점이 있다. 예를 들어 Amazon Corretto에서 만든 자바는 AWS에 최적화되어 있다. 각 회사는 윈도우, Mac, 리눅스와 같이 여러 OS 버전의 자바도 제공한다. 
  • 자바를 구현할 때 표준 스펙에 맞춰 개발되므로 Amazon Corretto의 자바로 개발하다가 오라클 Open JDK 자바로 변경해도 대부분 문제 없이 작동한다.
자바 프로그램은 컴파일실행 단계를 거친다. 
  • 개발자가 Hello.java라는 자바 소스코드를 작성한다. 
  • 자바 컴파일러를 사용해서 소스코드를 컴파일한다. 
    • 자바가  제공하는 javac라는 프로그램을 사용한다. 
    • .java를 .class 파일로 변환하며 .class 파일이 생성된다. 
    • 자바 소스 코드를 바이트로 변환하며 자바 가상 머신에서 더 빠르게 실행될 수 있게 최적화하고 문법 오류를 검출한다. 
  • 자바 프로그램을 실행한다. 
    • 자바가 제공하는 java라는 프로그램을 실행한다. 
    • 자바 가상 머신(JVM)이 실행되면서 프로그램이 작동한다. 
인텔리제이를 통한 자바 컴파일, 실행 과정
  • 자바 코드를 컴파일 하려면 javac를 이용해야 하는데 인텔리제이는 자바 코드를 실행할 때 자동으로 이 과정을 처리한다. 
    • 예 : javac Hello.java
    • 인텔리제이의 프로젝트 > out에 가면 컴파일된 .class 파일이 있다. 
  • 자바를 실행하려면 java를 사용해 .class 파일을 지정하면 된다. 
    • 예 : java Hello (참고로 확장자는 제외한다.)
  • 인테리제이에서 자바 코드를 실행하면 컴파일과 실행을 한 번에 처리한다. 
자바와 운영체제 독립성
  • 일반적인 프로그램은 다른 운영체제(윈도우, Mac, 리눅스)에서 실행할 수 없다. 왜냐하면 윈도우 프로그램은 윈도우 OS가 사용하는 명령어로 구성되어 있기 때문에 다른 OS와는 호환되지 않는다. 
  • 자바 프로그램은 자바가 설치된 모든 OS에서 실행할 수 있다. 
  • 자바 개발자는 자바에 맞춰 개발하면 되고 OS 호환성 문제는 자바가 해결한다. 컴파일된 자바 파일(.class)은 모든 자바 환경에서 실행할 수 있다. 
  • 각 OS 별 자바는 해당 OS에서 사용하는 명령어로 구성되어 있어 개발자는 OS에 맞는 자바를 설치하기만 하면 된다. 
  • 개발할 때의 자바와 서버에서 실행할 때 다른 자바를 사용할 수 있다. 자바의 운영체제 독립성 덕분이다.