[자바] 기본적인 개념 정리
자바
자바란?
- 객체지향 프로그래밍 언어이다.
- 운영체제 ( OS )에 독립적이다 ( JVM 덕분 )
자바 특징
장점
1. 운영체제에 독립적이다.
-> 모든 자바 프로그램은 JVM을 통해 OS랑 통신하기에 OS로부터 독립적이다
2. 객체지향언어이다
-> 상속, 캡슐화, 다형성, 재사용성, 유지보수 용이성이 뛰어남
3. 비교적 배우기 쉽다
4. 자동 메모리 관리( Garbage Collection )가 된다
-> 메모리 누수가 발생하지 않는다.
5. 네트워크와 분산처리를 지원한다
-> 네트워크 프로그래밍 라이브러리를 통해 대규모 분산환경을 지원한다
6. 멀티쓰레디를 지원한다
-> 멀티쓰레드 프로그램은 시스템과는 관계없이 구현가능하며, 여러 쓰레드에 대한 스케줄링은 자바 인터프리터가 담당한다
7. 동적 로딩( Dynamic Loading )을 지원한다
-> 필요한 시점에 클래스를 로딩하여 사용함을 의미한다. 따라서, 전체 애플리케이션을 다시 컴파일 하지 않아도 된다.
가비지컬렉터 ( Garbage Collector ) : 프로그램에 유효하지 않은 메모리를 처리해준다
쓰래드 ( Thread ) : 프로세스내 실제 작업 수행 주체
멀티 쓰래드 ( Multi-thread ) : 하나의 프로세스안에서 여러 쓰래드 수행
단점
1. 속도가 느리다
-> 하지만, JIT컴파일러 ( 바이트코드 -> 하드웨어 기계어 )로 변환
자바 프로그램 작성하기
- java의 파일명과 클래스의 이름이 같아야한다. ( 소스파일의 이름은 public class의 이름과 같아야 한다. )
- 자바에서 모든 코드는 반드시 클래스안에 존재해야한다. ( 서로 관련된 코드들은 그룹으로 나누어 별도의 클래스를 구성 )
- public static void main(String[] args)는 mian메서드의 선언부이므로, 항상 똑같이 적어줘야함
- 모든 클래스가 main 메서드를 가져야 하는것은 아니지만, 하나의 Java 애플리케이션은 main메서드가 포함된 클래스가 반드시 하나는 있어야 한다.
올바른 작성 | 설명 |
Hello2.java public class Hello2 { } class Hello3 { } |
public class가 있는 경우, 소스파일의 이름은 반드시 public class의 이름과 일치해야한다 |
Hello2.java class Hello2 { } class Hello3 { } |
public class가 없는 경우, 소스파일의 이름은 둘다 가능하다 |
잘못된 작성 | 설명 |
Hello2.java public class Hello2 { } public class Hello3 { } |
하나의 소스파일에 둘 이상의 public class가 존재하면 안된다. |
Hello3.java public class Hello2 { } class Hello3 { } |
소스파일의 이름이 public class의 이름과 일치하지 않으므로, 소스파일의 이름을 Hello2.java 로 변경해야한다 |
hello2.java public class Hello2 { } class Hello3 { } |
소스파일의 이름이 public class의 이름과 일치하지 않는데, 대소문자를 주의해야 한다. |
자바프로그램 실행과정
내부적인 진행순서
1. 프로그램 실행에 필요한 클래스( *.class )를 로드한다
2. 클래스파일을 검사한다 ( 파일형식, 악성코드 체크 )
3. 저장된 클래스에서 main(String[] args)를 호출한다
Java Source Code .java |
( compile ) |
Java Application.class |
( run ) |
JVM ( Java Virtual Machine ) |
computer |
JVM ( Java Virtual Machine )
- 자바를 실행하기 위한 가상 기계
- OS에 종속적이기 떄문에 해당 OS에 실행가능한 JVM이 필요하다
Java API문서 설치하기
작은 꿀 Tip
맥 - vscode에서는 control + option + N 이 실행시키는 단축키입니다.