Home [Java] Java란..?
Post
Cancel

[Java] Java란..?

Java

  • 프로그래밍 언어 중 하나로 컴퓨터 프로그램, 웹/모바일 애플리케이션 등을 만드는 데 사용됨
  • 전 세계적으로 가장 많이 사용되는 언어 중 하나로 2022년 6월 기준 Python, C에 이어 3위를 차지함
  • https://www.tiobe.com/tiobe-index/ java

자바 언어를 사용하는 이유

  • 객체 지향적 언어로 유지보수가 쉽고 재사용성이 뛰어나며 생산성이 높습니다.
  • 운영체제에 독립적이므로, JVM을 통해 운영체제나 플랫폼에 관계없이 실행 가능합니다.
  • Garbage Collection(GC)이 자동으로 메모리를 관리해주므로, 개발자가 따로 메모리 관리를 하지 않아도 됩니다.
  • 분산처리에 용이합니다.
  • 다양한 네트워크 프로그래밍 라이브러리를 통해 빠른 시간 안에 네트워크 관련 프로그램을 쉽게 개발할 수 있도록 지원합니다.
  • 멀티스레드를 지원하며, 여러 스레드에 대한 스케줄링을 자바 인터프리터가 담당합니다.
  • 동적 로딩을 지원하므로, 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있습니다.

절차지향 언어와 객체지향 언어의 비교

 절차지향 언어(Procedural Programming)객체지향 언어(Object-oriented Language)
개념- 순차적인 처리를 중요시 하며, 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법
- 대표적으로 C언어가 있음
- 객체란 물리적으로 존재하여 다른 것과 식별 가능한 것
- 객체는 관련된 데이터와 함수(메소드)의 집합
- 실제 세계를 모델링하여 소프트웨어를 개발하는 방식
- 객체지향 언어란 프로그램을 다수의 객체로 만들고 이들끼리 서로 상호작용 하도록 만드는 것
- Java, Python, C# 등이 있음
장점- 컴퓨터의 처리구조와 유사해 실행속도가 빠름- 재사용성 우수, 생산성 증가
- 유지보수가 용이함
- 자연스러운 모델링 가능
- 디버깅이 쉬움
단점- 하나의 문제를 해결하기 위해 시스템 전체를 수리해야 하므로 유지보수가 어려움
- 디버깅이 어려움
- 실행 순서가 정해져있으므로 코드의 순서가 바뀌면 동일한 결과를 보장하기 어려움
- 비효율적, 언어의 융통성 부족
- 절차지행에 비해 느린 실행 속도
- 설계에 많은 시간이 소요됨

객체지향 언어의 특징

OOP is APIE

추상화(Abstraction)

  • 추상화: 복잡한 것을 단순하게 표현하는 방법
  • 추상화란 실존하는 객체의 여러 특성 중, 프로그램을 만드는 데 필요한 공통적인 특징, 속성, 기능 등을 추출하는 것
  • 객체, 클래스, 변수 등을 사용해서 어떻게 작동하는 지 나타내는 것

다형성(Polymorphism)

  • 하나의 클래스나 메소드가 다양한 방식으로 동작 가능한 것
  • 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 함
  • 오버라이딩(Overriding): 부모 클래스 메소드의 동작 방식을 재정의하여 우선적으로 사용하는 것
  • 오버로딩(Overloading): 하나의 클래스에서 다른 parameter를 갖는 같은 이름의 메소드를 여러 개 정의할 수 있음

상속(Ingeritance)

  • 부모로부터 자식이 상속받듯이, 자식 클래스가 부모 클래스로부터 상속받은 속성을 사용할 수 있는 것
  • 이미 작성된 클래스를 재활용해서 새로운 클래스를 생성하는 기법

캡슐화(Encapsulation)

  • 관련된 데이터와 알고리즘을 하나로 묶고 외부에서 쉽게 접근하지 못하도록 숨기는 것
  • private로 정의된 속성을 외부에 노출시키지 않고 자신의 클래스에서만 사용함
  • 캡슐화되어있지 않은 데이터와 코드는 사용하기 어려움
This post is licensed under CC BY 4.0 by the author.