자바의 정석 1장: 자바 시작 전

YeongJun Son·2023년 3월 30일
0

자바의 정석

목록 보기
1/2

1. 자바

1.1 자바란?

자바의 특징

  • 운영체제에 독립적 → 프로그램 변경 없이도 실행 가능
  • 클래스 라이브러리를 통해 프로그래밍에 필요한 요소 기본 제공

1.2 자바의 역사

  • C++의 장점을 도입하고 단점을 보완 (1996년 1월 탄생)

1.3 자바 언어의 특징

  1. 운영체제에 독립적임

    프로그램은 운영체제나 하드웨어가 아닌 JVM과 통신
    → JVM은 운영체제에게 변환하여 전달

  2. 객체지향언어임

    상속, 캡슐화, 다양성이 잘 적용됨

  3. 비교적 배우기 쉬움

    연산자, 기본구문 from C++, 객체지향관련 from smalltalk

  4. 자동 메모리 관리

    따로 메모리 관리 필요성이 없음

  5. 네트워크와 분산처리 지원

    Java API를 통해 쉽게 네트워크 관련 프로그램 개발 가능

  6. 멀티 쓰레드 지원

    시스템과 관계 없이 구현 가능하며, 관련 라이브러리 제공.

    → 스케쥴링을 자바 인터프리터가 담당

  7. 동적 로딩 지원

    여러 개의 클래스는 실행 시가 아니라 필요한 시점에 로딩

    일부 클래스가 변경되어도 전체 애플리케이션 재 컴파일 필요 없음

1.4 JVM(Java Virtual Machine)

  • JVM은 Java virtual machine의 준말.

일반 애플리케이션

  • OS만 거치고 하드웨어로 전달 → App: OS 종속적

Java 애플리케이션

  • JVM을 거치고, JVM이 OS 단을 거친다 → App: OS 및 하드웨어 독립적 (단, JVM: OS 종속적)

2. 자바개발환경 구축하기

2.1 자바 개발도구(JDK) 설치하기

주요 실행 파일들

  • javac.exe: 자바 컴파일러 → c: … >javac 파일명.java
  • java.exe: 자바 인터프리터 → c: … >java 파일명
  • javap.exe: 역어셈블러 → c: … >javap 파일명 > 파일명.java
    (‘-c’ 옵션: 바이트코드로 컴파일된 내용도 확인 가능)
  • javadoc.exe: 자동 문서 생성기 (Java API 형식의 문서)
    → c: … >javadoc 파일명.java
  • jar.exe: 압축 프로그램 (실행 관련, 클래스 파일 → jar)
    → c:.. >jar cvf 파일명.jar 클래스명1.class 클래스명2.class (압축)
    → c:.. >jar xvf 파일명.jar (압축 풀기)

2.2 Java API 문서 설치하기

3. 자바로 프로그램 작성하기

3.1 Hello.java

  • eclipse, IntelliJ 등 고급 개발도구 사용 추천

주의점

  • 모든 코드는 반드시 클래스 안에 존재해야 함

    class 클래스이름 { // w/ public class: 소스 파일을 클래스 이름과 동일하게 해야 함
    	public static void main(String[] args) // main 메서드의 선언부
    	{
    		// 실행될 문장들
    	}
    }
  • 괄호: 메서드의 시작과 끝

  • 하나의 소스파일에 하나의 클래스만을 정의하는 것이 보통 → 둘 이상도 가능

  • 소스 파일의 이름은 public class의 이름과 일치 해야 한다
    → 소스 파일 내에 public class가 없을 때?
    → 소스 파일의 이름은 어떤 클래스의 이름도 상관없음

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

대표적 예시들

  1. cannot find symbol 또는 cannot resolve symbol

    변수나 메서드가 선언되지 않았거나, 그 이름을 잘못 사용한 경우

  2. ‘;’ expected

    모든 문장의 끝에 붙여야 할 ‘;’ 가 없음

  3. Exception in thread “main” java.lang.NoSuchMethodError: main

    main 메서드가 없거나 입력 시 잘못되어 인식하지 못할 때

  4. Exception in thread “main” java.lang.NoClassDefFoundError: 클래스명

    클래스를 인식하지 못할 때 → 이상이 없다면 클래스패스의 설정 재확인

  5. illegal start of expression

    문법적 오류

  6. class, interface, or enum expected

    키워드가 없다는 뜻이나, 괄호가 짝이 맞지 않는 경우

에러 발생 시 순서도

  1. 에러 메시지 + 해당 라인 및 주변 살펴보기
  2. 기본적 부분 재확인
  3. 의심 부분 주석 처리하거나 따로 떼어내서 처리

3.3 자바프로그램 실행과정

내부적 진행 순서

  1. 클래스 (파일) 로드
  2. 클래스 파일 검사 → 파일 형식, 악성코드
  3. 지정된 클래스에서 main (String[] args) 호출

3.4 주석

주석의 역할

  • 프로그램 코드에 대한 설명과 프로그램 정보 제공

주석의 종류

  1. 범위 주석: ‘/’와 ‘/’ 사이 내용을 주석
  2. 한 줄 주석: ‘//’부터 라인 끝까지를 주석

3.5 이 책으로 공부하는 방법

연습문제


참고 및 탐구

References

남궁성. "자바를 시작하기 전에." Java의 정석. 도우, 2016.

공부할 주제

  • 따로 Java의 역사를 공부하며 C/C++ 와의 차이를 기술
    • 완료 링크: (미완)
  • 'public static void main(String[] args)'와 관련해, 메서드 선언에 관한 공부
    • 완료 링크: (미완)
profile
제가 좋아하는 것은 도가 아니라 기입니다

0개의 댓글