티스토리 뷰

CS/JAVA

자바의 특징

파이 2024. 5. 23. 14:12

 

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. 자바의 단점


  • 자바는 실행을 위해 자바 가상 머신을 거쳐야 하므로, 다른 언어에 비해 실행속도가 느리다.
  • 자바는 예외 처리가 잘 되어 있지만, 개발자가 일일이 처리해줘야 한다는 불편함이 있다.
  • 자바는 다른 언어에 비해 작성해야하는 코드의 길이가 긴 편이다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
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
글 보관함