-
JAVA 뜯어보기!개념정리 2023. 4. 21. 00:36
Java를 사용하는 개발자로서 Java의 특징과 기능들에 대해서 공부해보려한다.
개인적으로 공부한 내용이라 모든 내용이 꼭 맞지는 않겠지만 Java의 대표적인 기능과 특징에 대해 적어봅니다.
Java의 개발: 제임스 고슬링
1. Java 장단점
장점)
- JVM이 설치돼 있다면 어떤 운영체제에서든 구동할 수 있다. (이식성)
- 객체 지향 프로그램 언어로서, 개발자는 기존 코드를 재사용하고 모듈식 프로그램을 개발할 수 있습니다.
- 자바는 독립적이다. 플랫폼에 구애받지 않으며 이는 웹 기반 소프트웨어에 필수적 요소이다.
- 보안이 강하다
- 이미 많은 사용자를 보유하고 있어 오픈 소스 및 정보가 방대하다
- 가비지컬렉션(GC) : JVM의 Heap 영역에서 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리 영역을 주기적으로 삭제해준다.(장점이자 단점이 될 수 있는데, 개발자가 메모리가 언제 해제되는지 정확하게 알 수 없으며, GC가 동작하는 동안에는 다른 동작을 멈추기 때문에 오버헤드가 발생한다.)
단점)
- 다른 프로그래밍 언어와 비교하면 속도가 느리다.
- 코드 작성의 난이도가 높다(코드가 길고 많은 편)2. 객체지향언어와 절차지향언어의 차이 (OOP vs POP)
- 절차지향 특징 : 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 프로그래밍 하는 기법
장점: 컴퓨터의 처리구조와 유사해 실행속도가 빠르다.
단점: 유지보수 및 디버깅이 어렵다. 실행 순서가 정해져있으므로 코드의 순서가 바뀌면 결과 보장 어려움
- 객체지향 특징 : 기능별로 묶어 모듈화 함으로써 같은 기능을 중복으로 연산하지 않도록 한다.
장점: 재사용성(상속을 통한 코드의 재사용), 생산성 향상(클래스를 잘 활용하여 독립적인 객체사용), 유지보수 의 우수성(캡슐화)
단점: 어떤 모듈에 있는 하나의 기능만 필요한 경우에도 모듈 전체를 가져와야 하기 때문에 프로그램이 무거워 지며 절차지향식보다 느려지는 경우가 많다3. 객체지향언어(Object Oriented Programming)의 특성
1. 추상화 : 객체의 공통적인 속성이나 기능을 추출하여 정의
예) 고양이(객체), 강아지(객체), 소(객체) ==> 동물 (추상화)
2. 캡슐화 : 특정 객체가 독립적으로 역할을 수행하기 위해 필요한 데이터와 기능을 하나로 묶은 것 => 모듈화
2-1 은닉화: 캡슐화를 통해 정보를 객체안에 포함시키고, 그 정보에 대해 직접 접근을 허용하지 않는 대신, 필요에 따라 확인할 수 있는 인터페이스를 외부에 공개함으로써 정보를 은닉할 수 있다.
3. 상속 : 상위 클래스의 특징을 하위 클래스가 이어받음
예) 유전자 : 부모->자식
4. 다형성 : 한 객체가 다른 여러형태로 재구성 될 수 있음 (한 부모의 밑에서 태어난 자식들이 각각 다를 수 있다)
4-1 : 오버로딩(Overloading) : 같은 이름의 메서드를 여러개 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술
4-2 : 오버라이딩(Overriding) : 상위 클래스가 가지고 있는 필드값/메서드를 하위 클래스가 재정의해서 이용