자바란?
1. 자바의 가장 중요한 특징은 운영체제의 종류에 관계없이 실행이 가능하다는 것이다.(운영체제에 독립적)
-> 왜?
타 언어 애플리케이션의 경우 os와 직접 통신하게 된다.
하지만 자바 애플리케이션의 경우 JVM과 통신을 하고, os와 JVM이 통신을 한다.
그러므로 JVM은 해당 os에서 실행가능한 JVM이 필요하다.(JVM은 종속적)
따라서 JVM은 종속적이고 운영체제는 독립적이다.
2. c++의 장점과 사용하지 않는 부분을 제외해서 배우기가 쉽다.
객체지향이라는 관점
c++은 메모리 관리를 직접 해줘야하지만 자바는 JVM의 가비지컬렉터를 통해 자동적으로 메모리 관리를 해준다.
연산자 오버로딩, 다중상속을 하지 않음(다이아몬드 문제)
연산자 오버로딩 - 코드 난독화 때문에 사용하지 않는다는 의견도 있지만 자바 창시자인 제임스 고슬링은
C ++에서 너무 많은 사람들이 그것을 남용하는 것을 보았기 때문에 연산자 오버로드를 상당히 개인적인 선택으로 제외했다고 한다.
다이아몬드 문제 - 동일한 메소드가 있는 클래스를 상속받을 경우 그 메소드를 실행하게 되면 어떤 메소드를 호출해야 할지 모르기 때문에 다중상속을 허용하는 대신 인터페이스를 통해 간접적으로 다중상속을 허용한다.
.※ 인터페이스
실질적인 구현이 이루어지지 않고 메소드에 대한 정의만 하고 있기 때문에 다중상속에 대한 충돌이 일어나지 않는다
클래스 라이브러리(Java API)
• 손쉽게 프로그래밍 할 수 있도록 처음부터 많은 종류의 클래스들을 제공. 클래스들의 모음을 클래스 라이브러리라고 한다.
• java.lang, java.io, java.util 등..이 대표적이다.
자바8버전을 아직까지 사용하는 이유?
• LTS버전이다(장기지원)
• 8버젼 이후로 유료화가 되어서
객체지향언어란?
프로그램을 속성(변수) 행위(메소드)로 이루어진 객체라는 기본단위로 나누고, 이 객체들간의 상호작용을 통해 프로그램을 설계하고 개발하는 것
객체지향언어의 특징
• 상속: 이미 정의된 부모 클래스의 모든 속성과 연산을 자식 클래스가 물려받는 것.
• 캡술화: 데이터와 데이터를 처리하는 함수를 하나로 묶는 것
• 다형성: 하나의 변수 또는 함수가 상황에 따라 다르게 응답하는 것.
• 추상화: 여러 객체들의 공통적인 특징(속성과 행위)를 도출하는 것.
자바 실행 과정
Hello.java 작성 -> javac.exe(컴파일) -> Hello.class 생성 -> java.exe(인터프리터) 실행 -> 출력