파티 초대장 애플리케이션을 하나를 만들고 친구들이 보유한 다양한 장치에서 앱이 잘 작동하도록 하는 방법을 예로 들어 생각해 보겠습니다.
① 소스: 소스를 생성합니다. 이때 정해진 프로토콜(이 경우에는 자바 언어)을 지켜야 합니다.
② 컴파일러: 소스 코드를 컴파일러로 처리합니다. 컴파일러는 오류가 없는지 확인하고 모든 것이 제대로 실행되는 경우에만 최종 결과를 생성합니다.
③ 결과물(코드): 컴파일러는 자바 바이트코드(bytecode)라는 코딩된 새 문서를 생성합니다. 자바를 실행할 수 있는 모든 장치는 이 파일을 해석(번역)하고 실행합니다. 그리고 컴파일한 바이트코드는 플랫폼의 종류와 무관하게 어디에서든 사용할 수 있습니다.
④ 가상 머신: 친구들은 모두 본인이 사용하는 전자제품 안에 소프트웨어로 구현된 자바 가상 머신(JVM, Java Virtual Machine)을 가지고 있습니다. 친구들이 여러분이 만든 프로그램을 실행하면 해당 가상 머신에서 바이트코드를 읽어서 애플리케이션을 실행시키죠.
어떤 식으로 실행되는지부터 대략적으로 알아볼까요? (이 이미지의 코드는 실제 코드가 아니니 컴파일하지 마세요.) 일단 소스 코드를 입력하고 javac 컴파일러로 컴파일한 다음, 컴파일된 바이트코드를 자바 가상 머신에서 실행합니다.
① 소스: 소스 코드를 입력합니다. 그리고 Party.java라는 이름으로 저장합니다.
② 컴파일러: javac(컴파일러 애플리케이션)를 실행해서 Party.java 파일을 컴파일합니다. 아무런 오류도 없다면 Party.class라는 새로운 파일이 생성됩니다. 컴파일러에서 생성된 Party.class 파일은 ‘바이트코드’로 이루어져 있습니다.
③ 결과물(코드): 컴파일된 코드: Party.class
④ 가상 머신: 자바 가상 머신(이하 JVM)을 통해 Party.class 파일을 실행합니다. JVM은 바이트코드를 해당 플랫폼에서 이해할 수 있는 형태로 해석해서 여러분의 프로그램을 실행합니다.
소스 파일 안에는 무엇이 들어갈까요?
소스 코드 파일(.java라는 확장자가 붙은 파일)은 일반적으로 클래스(class)를 한 개씩 정의합니다. 클래스는 보통 프로그램의 한 부분을 나타내지만, 아주 작은 애플리케이션 중에는 단 한 개의 클래스만으로 이뤄진 것도 있습니다. 클래스는 한 쌍의 중괄호({ })로 둘러싸인 형태여야 합니다.
클래스 안에는 무엇이 들어갈까요?
하나의 클래스 안에는 하나 이상의 메서드(method)가 들어갑니다. 예를 들어서, (개를 나타내는) Dog 클래스에는 (짖는 것을 의미하는) bark라는 메서드가 들어갈 수 있으며, 이 메서드에는 개가 짖는 방법을 지시하는 내용이 들어갑니다. 메서드는 반드시 클래스 안에서 선언되어야 합니다. 즉, 클래스의 중괄호 안에 위치해야 합니다.
메서드 안에는 무엇이 들어갈까요?
메서드를 감싸는 중괄호 안에는 메서드에서 처리할 일을 지시하는 내용이 들어갑니다. 메서드 코드는 기본적으로 일련의 명령문을 모아놓은 것이므로 지금은 메서드를 일종의 함수나 프로시저와 비슷한 것으로 생각하면 됩니다.
☑️클래스 해부하기
JVM이 실행되면 우선 사용자가 명령행에서 지정한 클래스를 살펴봅니다. 그러고 나서 다음과 같은 특별한 메서드를 찾아봅니다.
public static void main (String[] args) {
// 코드가 들어갈 자리
}
이런 메서드를 찾으면 JVM은 main 메서드의 중괄호({ }) 안에 있는 모든 코드를 실행합니다.자바 애플리케이션은 적어도 하나의 클래스와 하나의 main 메서드가 있어야 합니다(클래스당 하나가 아니라 애플리케이션당 하나씩 있어야 합니다).
✅main이 들어 있는 클래스 만들기
자바는 모든 것이 클래스 안에 들어갑니다. 우선 (.java 확장자가 붙어 있는) 소스 코드 파일을 입력한 다음에 컴파일해서 (.class 확장자가 붙어 있는) 새로운 클래스 파일을 만들면 됩니다. 프로그램을 실행하는 것은 사실 클래스를 실행하는 것입니다.
프로그램을 실행하는 것은 JVM에 “MyFirstApp 클래스를 불러오고 그 main( ) 메서드를 실행하라. 그리고 main( ) 메서드에 있는 모든 코드가 실행될 때까지 계속 실행하라.”라는 뜻의 명령을 내리는 것입니다.
일단 실행 가능한 자바 코드를 만드는 메서드에 대해 살펴보겠습니다. 그러면 우선 main()부터 시작해 볼게요. main() 메서드는 프로그램이 실행을 시작하는 곳입니다. 프로그램의 규모가 얼마나 크든(다시 말해서, 프로그램이 사용하는 클래스가 몇 개인지와 상관없이), 실행하려면 main() 메서드가 필요합니다.
public class MyFirstApp{
public static void main (String[] args){
System.out.println("I Rule!");
System.out.println("The World");
}
}
☑️main 메서드란? (명령문, 반복문, 조건문)
일단 main(또는 어느 메서드든) 안으로 들어가면 본격적으로 무언가가 작동합니다. 즉, 대부분의 프로그래밍 언어에서 컴퓨터로 하여금 어떤 일을 하게 만드는 모든 일반적인 지시사항은 메서드 안에 들어 있습니다. 코드는 JVM에 다음과 같은 것들을 지시할 수 있습니다.
① 무언가를 하는 것
명령문: 선언, 대입, 메서드 호출 등
int x = 3;
String name = "Dirk";
x = x * 17;
System.out.print("x is " + x);
double d = Math.random();
// 주석은 이렇게 씁니다.
② 무언가를 여러 번 반복하는 것
반복문: for와 while
while (x > 12){
x = x - 1;
}
for (int i = 0; i < 10; i = i + 1){
System.out.print("i의 값은 "+ i + "입니다.");
}
③ 조건에 따라 무언가를 하는 것
조건문: if/else 테스트
if (x == 10){
System.out.print("x must be 10");
}else{
System.out.print("x isn't 10");
}
if ((x < 3) && (name.equals("Dirk"))){
System.out.println("Gently");
}
System.out.print("이 명령문은 무조건 실행됩니다.");
✔️재미있는 몇 가지 자바 문법
■ 모든 명령문은 세미콜론으로 끝나야 합니다.
x = x + 1;
■ 한 행짜리 주석은 슬래시 두 개로 시작합니다.
x = 22;
// 이 행이 조금 이상한데?
■ 대부분의 경우, 공백은 큰 의미가 없습니다.
x = 3 ;
■ 변수를 선언할 때는 이름과 타입(type)을 지정합니다.
int weight;
// 타입: int, 이름: weight
■ 클래스와 메서드를 정의하는 부분은 한 쌍의 중괄호 안에 들어갑니다.
public void go() {
// 코드가 들어갈 자리
}
위 내용은 『헤드퍼스트 자바(3판)』의 내용을 재구성하여 작성되었습니다.
최신 콘텐츠