CH2. 메모장으로 Java 프로그램 개발해보기⭐

송쏭송·2024년 1월 13일

Java

목록 보기
2/8
post-thumbnail

프로그램 개발이란 ?

프로그램의 기획과 설계는 물론 실행, 평가, 환류과정을 망라하는 매우 복잡한 방법을 포괄하는 과정

이 글에선 단지 자바 프로그램을 작성하고 실행시켜보겠다.


Java로 프로그램을 개발하기 위해선 무엇이 필요할까 ??

JDK(자바 개발도구)텍스트 에디터(문서 편집기) 이다.

먼저 JDK(자바 개발도구) 를 설치하자. JDK 는 자바로 프로그램을 개발하기 위해 필요한 툴들을 모아놓은 소프트웨어 패키지이다. 이렇게 JDK 를 설치함으로써 Java SE 플랫폼 을 구축하는 것이다.

JDK 에 관한 자세한 내용은 CH1. JDK / JRE / JVM 뜯어보기 를 참고하자.

이제 텍스트 에디터(문서 편집기) 로 자바 프로그램을 작성한 후, 이 프로그램을 JDK 를 이용하여 실행시키면 된다. 사실, 이클립스나 인텔리제이와 같은 IDE(통합 개발 환경) 를 사용하면 훨씬 편리하게 자바 프로그램을 개발할 수 있다.
하지만, 이렇게 텍스트 에디터 를 이용하여 자바 프로그램을 개발해보면 분명히 많은 것들을 얻을 수 있다고 확신한다. 이글에서 필자는 매우 간단한 텍스트 에디터메모장(notepad.exe) 을 이용하여 자바 프로그램을 개발해 보겠다.

IDE 로 자바 프로그램을 개발하는 과정은 CH3. 메모장이 아닌 이클립스로 Java 프로그램 개발해보기 를 참고하자. (이글을 다 읽고 보자.)


Java 프로그램의 실행과정

  1. 소스파일(.java) 을 컴파일러가 컴파일 하여 클래스 파일(.class) 을 생성

  2. 생성된 클래스파일(.class) 들중 하나의 클래스파일(.class)JVM 이 실행

이처럼 자바 프로그램이 실행되는 전체적인 흐름은 간단하다.
이제 하나씩 자세히 알아보자


소스파일(.java) 생성하기

위처럼 메모장에 Test 클래스Tv 클래스 즉, 소스코드를 작성하고 이 소스코드를 Test.javaTv.java 로 저장하여 소스파일 을 생성해 보자. 이때, 소스파일 의 명은 클래스 명과 완전히 일치해야 하고 저장하는 경로는 아무곳이나 상관없다. 필자는 편의상 jdk 설치경로 바로 아래에 work 디렉토리를 만들어서 여기에 소스파일 들을 저장하겠다.
ex) C:\jdk17\work

Test 클래스 는 프로그램을 실행시키기 위한 목적으로 작성된 클래스 이고 Tv 클래스 는 Tv에 대한 간단한 정보를 저장하기 위한 목적으로 작성된 클래스 이다.

객체지향언어와 class에 대한 자세한 설명은 링크텍스트 를 참고하자.
아직 작성하지 못했다. 작성하면 업데이트 하도록 하겠다.

참고로, 하나의 소스파일 에 하나의 클래스 만을 정의하는것이 일반적이고 바람직하다. 하지만, 둘 이상의 클래스 를 정의하는 것도 가능하다. 이때, 주의 해야할점은 하나의 소스파일public class 는 반드시 하나만 있어여 하고 소스파일 의 이름은 이 public class 의 이름과 완전히 일치해야 한다.
만일 소스파일에 public class 가 하나도 없다면, 소스파일 의 명은 소스파일 에 있는 아무 클래스의 이름으로 해도 상관없다. 또한, 클래스파일클래스 마다 하나씩 만들어 진다. 즉, 둘 이상의 클래스 가 있는 소스파일 을 컴파일하면 클래스파일소스파일 에 작성된 클래스 의 수 만큼 생성된다.

public class와 class에 관한 자세한 내용은 링크텍스트 를 참고하자.
이것도 작성하지 못했다. 작성하면 업데이트 하도록 하겠다. 블로그 쓸 내용 겁나 많네..


컴파일러가 소스파일(.java)을 컴파일 하여 클래스파일(.class) 생성

위처럼 명령 프롬프트 와 같은 CLI(명령줄 인터페이스) 에 명령을 내려서 컴파일러가 소스파일(.java) 을 컴파일 하도록 해보자. 명령들에 관한 설명은 아래와 같다.

cd C:\jdk17\work        // 소스파일이 저장되어 있는 디렉토리로 이동
javac Test.java     	// 컴파일러가 Test.java 컴파일
						// Test.class 생성	
javac Tv.java           // 컴파일러가 Tv.java 컴파일
						// Tv.class 생성

// 환경변수 path에 C:\jdk17\bin를 등록했기 때문에 javac 명령어만 사용가능
// 만일 등록 시키지 않았다면 C:\jdk17\bin\javac 이렇게 사용해야 한다.

이렇게 명령들을 실행하면 아래와 같이 소스파일 이 저장되어 있던 디렉토리에 클래스파일 이 생긴것을 확인할 수 있다.


JVM이 클래스파일(.class) 실행

JVM 은 실행시키려는 클래스파일 에서 선언부가 public static void main(String args[]) 인 메서드를 찾아서 호출

JVM클래스파일(.class) 을 실행시킨다는 말은 JVM 이 실행시키려는 클래스파일 에서 선언부가 public static void main(String args[]) 인 메서드를 찾아서 호출한다는 말과 동일하다.
만약, 실행시키려는 클래스파일 에 선언부가 public static void main(String args[]) 인 메서드가 없으면 에러가 발생한다.

public static void main(String args[]) 에 관한 자세한 설명은 링크텍스트를 참고하자.
아직 작성하지 못했다. 작성하면 업데이트 하도록 하겠다.

위처럼 명령 프롬프트에 명령을 내려서 JVM클래스파일(.class) 을 실행 하도록 해보자. 명령들에 관한 설명은 아래와 같다.

cd C:\jdk17\work        // 소스파일이 있는 디렉토리로 이동
java Practice           // Jvm이 Practice.class 실행
						// 실행 성공
java Tv                 // Jvm이 Tv.class 실행
						// 에러 발생
                        // public static void main(String args[]) 메서드 찾을 수 없음

// 환경변수 path에 C:\jdk17\bin를 등록했기 때문에 java 명령어만 사용가능
// 만일 등록 시키지 않았으면 C:\jdk17\bin\java 이렇게 사용해야 한다.

이렇게 클래스 파일 을 실행시킬 때는 확장자(.class) 를 붙이지 않는다. 또한, 앞서 설명한것처럼 Test.class 는 잘 실행되고 Tv.class 는 에러가 발생하는 것을 알 수 있다.

JVM 이 어떻게 클래스파일을 실행시켜주는지는 CH4. JVM 구조와 동작방식 를 참고하자. JVM 의 구조와 JVM 이 어떻게 자바 프로그램을 실행시켜주는지 자세히 설명해준다.


Reference

자바의 정석 기초편 - 남궁성 지음

0개의 댓글