본문 바로가기

프로그래밍/JAVA

[JAVA 이론] 자바

JAVA란?

객체 지향 프로그래밍 언어(1996년 썬 마이크로 시스템즈)

 

자바 특징
1) 운영체제에 독립적 (JVM을 통해 간접적으로 OS에 접근함)

2) 객체지향 언어 (상속, 다형성, 추상화, 캡슐)
3) 자동 메모리 관리 (가비지 컬렉션)
4) 멀티 쓰레드 (Thread, Runnable) 

5) 동적로딩(여러 개의 클래스로 구성된 애플리케이션)

 

JAVA 구성
코드 > 클래스 > JAVA 애플리케이션

 

JDK의 bin의 주요 실행 파일

1) javac.exe - 자바 컴파일러, 자바소스코드를 바이트코드로 컴파일한다.

        D:\jdk1.8.0_291\bin> javac Hello.java

2) java.exe - 자바 인터프린터, 컴파일러가 생성한 

        D:\jdk1.8.0_291\bin> java Hello

3) javap.exe - 역어셈블러, 컴파일된 클래스파일을 원래의 소스로 변환한다

        D:\jdk1.8.0_291\bin> javap Hello > Hello.java

4) javadoc.exe - 자동문서생성기, 소스파일에 있는 주석(/** */)을 이용하여 JAVA API문서와 같은 형식의 문서를 자동으로 생성한다.

        D:\jdk1.8.0_291\bin> javadoc Hello.java

5) jar.exe - 압축프로그램, 클래스파일과 프로그램의 실행에 관련된 파일을 하나의 jar파일(.jar)로 압축하거나 압축해제.

        압축할 때: D:\jdk1.8.0_291\bin> jar cvf Hello.jar Hello1.class Hello2.class

        압축풀 때: D:\jdk1.8.0_291\bin> jar xvj Hello.jar

 

JAVA API 문서 사이트

https://docs.oracle.com/javase/8/docs/api/

 

Java Platform SE 8

 

docs.oracle.com

자주 발생하는 에러와 해결방법

1) cannot find symbol 또는 cannot resolve symbol

  • 지정된 변수나 메서드를 찾을 수 없다는 뜻
  • 해결 방법: 선언되지 않은 변수나 메서드 확인

2) ';' expected

  • 세미콜론 ';'이 필요한 곳에 없다는 뜻
  • 해결 방법: 자바 문장의 끝에 ';' 붙히기 

3) Exception in thread "main" java.lang.NoSuchMethodError: main

  • 'main'메서드를 찾을 수 없다.는 뜻
  • 해결 방법:  main메서드가 정확히 정의 되어 있는지 오타는 없는지 확인

4) Exception in thread "main" java.lang.NoClasDefFoundError: Hello

  • "Hello"라는 클래스를 찾을 수 없다는 뜻
  • 해결 방법: 클래스의 대소문자 확인 > 클래스파일 존재 확인 > 클래스패스 설정 확인

5) illegal start of experssion

  • 문장에 문법적 오류가 있다는 뜻
  • 해결 방법: 괄호, if문 for문 등 문법적 오류 확인 또는 public, static과 같은 키워드 확인

5) class, interface, or enum expected

  • class, interface, enum이 없다는 뜻
  • 보통 괄호 갯수 맞지 않은 문제

 ※ 에러 잡는 Tip

  • 에러코드 잘 읽기
  • 해당 코드 주위 살펴보기
  • 이상이 없으면 기본적인 부분 재확인
  • 의심가는 부분을 주석처리하거나 따로 떼어네서 테스트
자바프로그램의 실행과정

D:\jdk1.8.0_291\bin> java Hello

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

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

[JAVA 이론] 객체지향 프로그래밍_1  (2) 2022.01.19
[JAVA 이론] 배열  (0) 2022.01.15
[JAVA 이론] 조건문과 반복문  (0) 2022.01.12
[JAVA 이론] 연산자  (0) 2021.12.28
[JAVA 이론] 변수  (0) 2021.12.16