본문 바로가기

프로그래밍언어/JAVA

[JAVA] 자바 개발환경 구축 및 프로그래밍 시작

반응형

자바 개발환경 구축

 

1. JDK 설치

 

JDK Java Development Kit JVM 자바클래스 라이브러리 (Java API) 외에 자바 프로그래밍을 하기 위해 필요한프로그램들이 설치된다JDK 설치한 후에는 설치된 디렉토리의 bin 디렉토리를 path 추가해주어야 한다. path 등록된 경로를 통해서OS 파일의 위치를 파악하는데 사용하는 경로로 디렉토리를 등록하면 따로 파일 경로없이 파일 이름만으로 사용할  있다.

 

JDK 주요 실행파일들은 다음과 같다.

  • javac.exe: 자바 컴파일러, 자바 소스코드를 바이트 코드로 컴파일한다.
  • java.exe: 자바 인터프리터, 컴파일러가 생성한 바이트 코드를 해석하고 실행한다.
  • javap.exe: 역어셈블러, 컴파일  클래스 파일을 원래의 소스로 변환한다.
  • javadoc.exe: 자동 문서 생성기, 소스파일에 있는 주석을 이용하여 Java API 문서와 같은 형식의 문서로 자동으로 생성한다.
  • jar.exe: 압축 프로그램, 클래스 파일과 프로그램의 실행에 관련된 파일을 하나의 jar 파일로 압축하거나 압축해제한다.

※ JDK와 JRE

  • JRE: 자바실행환경, Java Runtime Environment
  • JDK: 자바개발도구, Java Development Kit

자바로 프로그램 작성

 

1. Hello.java

 

자바로 프로그래밍을 하기 위해서는 메모장과 같이 코드를 작성할  있는 에디터가 필요하다. 기본적인 편집기인notepad 부터 자바를 위한 고급툴인 eclipse intelliJ 등을 사용할  있다.

 

편집기가 준비되었으면 다음과 같은 파일을 작성해보자.

 

# Hello.java

class Hello {
public static void main(String[] args) {
	System.out.println("Hello, World.");
	}
}

 

위의 예제 소스는 화면에 "Hello, World." 출력하는 간단한 프로그램이다.  예제를 실행하기 위해서는 javac.exe (자바 컴파일러) 통해 소스파일을 컴파일하여 클래스 파일 (Hello.class) 생성해야 한다.   다음 java.exe (자바인터프리터) 통해 실행한다.

 

Hello.java --- (javac.exe) ---> Hello.class --- (java.exe) ---> 프로그램 실행: 화면에 Hello, World 출력

 

Hello 클래스와 main 메서도 모두 선언부 뒤에 이어서 {} 괄호가 나오는데,  괄호 안에는  선언부로 선언된 부분에 대한 구현, 작업할 내용이 들어가게 된다.

 

위의 예제와 같이 자바에서 모든 코드는 반드시 클래스 안에 존재해야 한다. 서로 관련된 코드들을 그룹으로 나누어 별도의 클래스를 구성하고  클래스들이 모여 하나의 Java 애플리케이션을 이룬다.

 

위의 예제를 보면 Hello라는 class안에 public static void main(String[] args) 라는 라인이 존재한다.  라인은 main이라는 method 선언하는 부분인데, main method java.exe 통해서 자바 프로그램을 실행할  java.exe 의해서호출될  있도록 미리 자바 문법으로 정해둔 부분이므로 어떤 프로그램에서도 동일하게 적어주어야 한다.

 

모든 클래스가 main 메서드를 가져야  필요는 없지만 하나의 java 애플리케이션은 무조건 main 메서드를 포함한클래스를 하나는 가지고 있어야 한다. java 애플리케이션은 main 메서드를 시작점으로 main 메서드의  문장부터마지막 문장까지 수행하여 동작을 완료하기 때문이다. 자바 애플리케이션을실행 시에는 java.exe 통해 main 메서드를 포함한 클래스를 실행시켜 동작시킨다.

 

하나의 소스파일에는 보통 하나의 클래스만을 정의하지만 다수의 클래스를 정의하는 것도 가능하다. 이때 주의해야할 점은 소스파일의 이름은 public class 이름과 일치해야 한다는 것이다. 만약 소스파일 내에 public class 없다면 어떤 클래스의 이름으로 해도 상관없다.

 

소스파일과 달리 클래스파일은 클래스마다 하나씩 만들어지게 된다. 그렇기 때문에 만약 Hello.java 안에 HelloHello1 메서드가 있는 경우 javac 통해 컴파일 하면 Hello.class, Hello1.class 두개의 클래스 파일이 생성된다.

 

 

2. 자주 발생하는 에러 정리

 

- cannot find symbol 또는 cannot resolve symbol

 

지정된 변수나 메서드를 찾을  없다는 뜻으로 선언되지 않은 변수나 메서드를 소스에서 사용하거나 이름의 오타등으로 잘못 사용한 경우에 발생한다. 이름의 대소문자나 철자 등의 일치여부를 확인해야한다.

 

- ';' expected

 

세미콜론 ';' 빠뜨린 경우에 발생한다. 자바는 모든 instruction 세미콜론으로 끝맺음 해줘야 한다.

 

- Exception in thread "main" java.lang.NoSuchMethodError: main

 

main 메서드를 찾을  없다는 뜻으로 실제 클래스에 main 메서드가 존재하지 않거나 메서드 선언부 public static void main(String[] args) 문제가 있는 경우 발생한다.

 

※ main 메서드에서 args 매개변수의 이름이므로 argv arg 같이 다른 이름을 사용할  있다.

 

- Exception in thread "main" java.lang.NoClassDefFoundError: Hello

 

Hello라는 클래스를 찾을  없다는 에러 메시지이다. 클래스 이름을 확인하고 Hello.class 파일이 제대로 생성되었는지 확인이 필요하다.

클래스 파일이 존재하는데도 동일한 에러가 발생하는 경우에는 classpath 설정이 바르게 되었는지 확인한다.

 

- illegal start of expression

 

문장의 앞부분이 문법에 맞지 않는다는 의미로 문장에 문법 오류가 있는 경우 발생한다.

 

- class, interface, or enum expected

 

키워드 class, interface, enum  없다는 뜻으로 보통 괄호의 짝이 맞지않을  발생한다.

 

 

3. 자바프로그램의 실행과정

 

  • 프로그램의 실행에 필요한 클래스를 로드한다. (*.class 파일)
  • 클래스파일을 검사한다. (파일형식, 악성코드 체크)
  • 지정된 클래스에서 main(String[] args) 호출한다.

 

4. 주석 (comment)

 

주석은 프로그램 코드의 설명을 비롯하여 작성자, 작성일시, 버전, 변경 이력 등의 정보를 제공할 목적으로 사용된다.

자바에서 주석을 사용하는 방법은 두가지 방법이 있다.

 

- 범위 주석: /* */ - 두 기호 사이의 내용을 모두 주석으로 간주한다.

- 한 줄 주석: // - 해당 기호을 시작으로 하는 한 라인을 주석으로 간주한다.

 

컴파일러는 컴파일 시에 주석을 무시하고 건너뛴다.

주의해야할 점은  따옴표 안에 주석이 존재하는 경우에는 문자열로 인식하기 때문에 프로그래밍 시에 주의해야한다.

반응형

'프로그래밍언어 > JAVA' 카테고리의 다른 글

[JAVA] 진법 및 진법변환  (0) 2021.08.01
[JAVA] 변수의 타입  (0) 2021.07.29
[JAVA] 변수와 상수  (0) 2021.07.28
[JAVA] 자바 (Java Programming Language)  (0) 2021.07.27
[JAVA] JVM (Java Virtual Machine)  (0) 2021.06.12