티스토리 뷰

1. 자바(Java)란 무엇인가?
자바는 썬 마이크로시스템즈가 1995년에 발표한 객체 지향적 프로그래밍 언어입니다.
처음에는 가전제품 내에 탑재해 동작하는 프로그램을 위해 개발했지만 현재는 웹 애플리케이션과 모바일 앱 개발에
가장 많이 사용하는 언어입니다.
2. 자바의 특징
- 객체 지향 언어이다.
- 객체 지향 프로그래밍(OOP, Object Oriented ProGramming)이란 프로그램을 개발하는 기법으로 부품에 해당하는 객체를 먼저 만들고, 이것들을 하나씩 조립 및 연결하여 전체 프로그램을 완성하는 것을 말한다.
- 객체를 만들기 위해서는 설계도인 클래스를 작성하고, 객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어낸다.
- 객체지향 언어의 특징인 캡슐화, 상속성, 다형성을 완벽하게 지원한다.
- 이식성이 높다
- 서로 다른 실행환경을 가진 시스템간에 프로그램을 옮겨 실행할 수 있는 것을 말한다.
- 자바는 자바 실행환경(JRE)이 설치 되어 있는 모든 운영체제에서 실행이 가능하다.
- 인터프리터 언어이다.
- 컴파일 언어인 동시에 인터프리터 언어이다.
- 텍스트 소스를 컴파일 하여 2진 파일(클래스 파일)로 만든 다음 런타임이 클래스 파일을 인터프리트 하면서 실행하다.
- 시스템에 무관한 2진 파일을 만듬으로서 자바는 컴파일 언어에 가까운 속도와 시스템 독립성을 얻을 수 있다.
- 메모리를 자동으로 관리한다.
- C++은 메모리에 생성된 객체를 제거하기 위해 개발자가 직접 코드를 작성해야한다. 만약 이 작업을 성실하게 해주지 않는다면 프로그램은 불완전해지고 갑자기 다운되는 현상을 겪을 수 있다.
- 자바는 개발자가 직접 메모리에 접근할 수 없으며 메모리는 자바가 직접 관리한다.
- 객체 생성시 자동으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 Garbage Collector를 실행시켜 자동으로 사용하지 않는 객체를 제거한다.
- 개발자는 메모리 관리의 수고를 덜고, 코딩에 온전히 집중할 수 있다.
- 멀티 스레드 구현이 쉽다.
- 운영체제에 따라 멀티 스레드를 구현하는 방법이 다르지만, 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하므로 운영체제에 상관없이 멀티 스레드를 쉽게 구현할 수 있다.
- 하나의 프로그램 단위가 동일한 쓰레드를 동시에 수행할 수 있다.
- 오픈소스 라이브러리가 풍부하다.
- 자바는 오픈소스 언어이고 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스의 양이 방대하다.
- 고급 기능을 구현하는 코드를 작성하는 대신 검증된 오픈소스 라이브러리를 사용하면 애플리케이션을 다시 컴파일 할 필요가 없다.
- 유지보수를 쉽고 빠르게 진행할 수 있다.
- 동적이다.
- 객체간의 상호 작용을 정의하기 때문에 필요하지 않는 객체는 생성되지 않고, 필요한 객체만 생성하여 사용한다.
- 오류가 발생하면 발생한 오류의 클래스만 수정하면 되므로 전체를 수정할 필요가 없다. 즉 유지보수를 빠르고 쉽게 할 수 있다.
3. 객체 지향 4대 특성
- 캡슐화(Encapsulation)
- 객체의 상태를 외부에서 접근하지 못하도록 제한하고, 메서드를 통해서만 상태를 변경할 수 있게 하는 기법.
- 정보 은닉(접근에 제한)
- public : 클래스 내부/외부에서만 접근이 가능하다.
- protected : 해당 객체를 상속받은 객체 내부에서 접근할 수 있다. 단순 인스턴스에서 접근할 수 없다.
- default : 동일한 패키지 내의 객체에서 인스턴스를 생성하여 접근할 수 있다.
- private : 클래스 내부에서는 접근이 가능하나 외부에서 접근할 수 없다.
- 상속(Inheritance)
- 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미한다. 상속을 이용하면 기존에 정의되어 있는 클래스의 모든 필드와 메서드를 물려받을 수 있다.
- 기존에 작성된 클래스를 재활용할 수 있다.
- 자식 클래스 설게 시 중복되는 멥버를 미리 부모 클래스에 작성해 놓으면, 자식 클래스에서는 해당 멥버를 작성하지 않아도 된다.
- 추상화(Abstraction)
- 클래스들의 공통적인 요소를 뽑아서 상위 클래스를 만들어내는 것이다. 공통적인 속성과 기능을 정의함으로써 코드의 중복을 줄이고, 클래스 간 관계를 효과적으로 설정하고, 유지보수를 용이하게 하는 것이다.
- 자바에서는 추상 클래스와 인터페이스라는 문법 요소를 통해 추상화를 구현할 수 있다.
- 다형성(Polymorphism)
- 하나의 객체나 메서드가 여러 가지 다른 형태를 가질 수 있다는 것을 의미한다.
- 부모 클래스로 자식 클래스들을 서로 다르게 동작시킬 수 있다.
- 오버로딩, 오버라이딩이 있다.
- 오버로딩 : 같은 이름의 메서드 여러개를 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술
- 오버라이딩: 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용하는 기술.
4. 자바의 단점
- 자바는 실행을 위해 자바 가상 머신을 거쳐야 하므로, 다른 언어에 비해 실행속도가 느리다.
- 자바는 예외 처리가 잘 되어 있지만, 개발자가 일일이 처리해줘야 한다는 불편함이 있다.
- 자바는 다른 언어에 비해 작성해야하는 코드의 길이가 긴 편이다.
'CS > JAVA' 카테고리의 다른 글
| 배열 [JAVA] (0) | 2024.10.20 |
|---|---|
| 클래스(Class)와 객체(Object) (0) | 2024.08.02 |
| JAVA 메모리 영역(Stack, Heap, Method) (0) | 2024.06.04 |
| 컴파일(Compiled)와 인터프리터(interpreter) 차이 (0) | 2024.05.23 |
| [JAVA] JVM이란? (JDK, JRE, 가비지 콜렉터 ) (0) | 2024.05.23 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 국비
- 백준
- java
- 그린대학교
- 정보처리기사
- (롯데)기업맞춤형 프로젝트
- 오류
- 자료구조
- git 베포
- static
- MySQL
- JWT
- 덱
- deque
- 인텔리제이
- wsl
- 롯데
- docker
- CSS
- form
- 스택
- 국비교육
- 공공데이터포탈
- Git
- 국비지원
- 김영한
- Queue
- 프로그래머스
- JPA
- 해시
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
글 보관함