- [Java] Java, 그리고 객체 지향 언어2024년 04월 08일
- Song hyun
- 작성자
- 2024.04.08.:28
728x90반응형Java, 그리고 객체 지향 언어
1. Java란?
-객체지향 프로그래밍 언어로서 1991년 제임스 고슬링을 포함한 썬 마이크로시스템즈의 연구원들에 의해 처음 개발되었다. '그린 프로젝트'라는 이름으로 시작해 1995년에 발표되었다. 처음에는 제임스 고슬링의 사무실 바깥의 참나무를 보고 오크(Oak)라고 명명하려 했으나, 이미 다른 회사의 상표로 등록된 이름이었기 때문에, 다른 후보들 중 하나인 Java로 이름지어졌다.
웹의 등장으로 엄청난 성공을 거두었고, 안드로이드 개발에도 자바가 널리 사용되며, 우리나라 대부분의 공공기관에서도 많이 사용하고 있다.
-시스템 및 어플리케이션 개발자들에게 익숙하도록 C/C++과 유사한 문법을 가지고 있다.
C++에 비해 단순하고 효율성을 높이기 위한 여러 기능이 있다.
-중립적이고 안전하게 실행되는 언어를 목표로 개발되었다.
-"Write once, Run anywhere"이라는 슬로건 하에,
한 번 코드를 작성하면 어떤 플랫폼에서든 독립적으로 사용할 수 있게 설계되었다.
-일반적인 컴퓨터 프로그램은 사람이 이해하기 쉬운 고급 프로그래밍 언어로 작성되고, 컴파일 과정을 통해 특정 CPU에서 실행 가능한 기계어 코드로 변환된다. Java 프로그램은 명령어 집합을 나타내는 한두 바이트의 코드인 '바이트 코드(Java Bytecode)라는 특수한 바이너리 형태로 컴파일되고, 자바 가상 머신(JVM=Java Virtual Machine)에서 실행된다. 이 자바 가상 머신은 CPU/운영체제 관계 없이 동일한 형태로 실행시키기 때문에, 자바 가상 머신이 설치 가능하다면 자바 어플리케이션을 운영체제/하드웨어 플랫폼 관계 없이 그대로 실행 가능하다.
*자바와 자바 스크립트: 둘은 엄연히 다른 언어다.
-자바는 범용 개발 언어지만, 자바스크립트는 웹페이지에서 동적인 컨텐츠를 만들기 위해 쓰는 언어이다.
-자바스크립트의 이름은 원래 라이브 스크립트였는데, 자바의 이름을 라이센싱하여 현재의 이름이 되었다.
2. Java 의 특징
-다양한 환경에서 사용이 가능하다. (범용성)
-단순하지만 강력하다.
-프로그램이 안정적이다. (안정성)
-여러 기능이 제공되는 언어이다.
-*객체 지향 언어이다.-다양한 환경에서 사용이 가능하다: 자바에서 가장 중요한 특징이다. 이 아이디어는 자바가 처음은 아니지만, 이를 실제로 구현해내고, 성공한 것은 자바이다. 자바는 컴파일된 실행코드가 플랫폼 독립적이며, 자바 컴파일러는 자바 프로그램(.java)를 바이트 코드(byte code)라는 이진 파일로 변환한다. 이를 위해 필요한 것이 자바 가상 기계(JVM)인 것이다. 이렇게 인터프리터-컴파일러를 모두 가진 자바의 특징으로 인해, 자바로 개발된 프로그램은 기종에 관계 없이 JVM을 설치할 수 있다면 어디서든 실행이 가능하다.
-단순, 하지만 강력: 자바는 C++에서 출발했지만, 필요로 하는 기능만을 남겨두었다.
-분산처리를 지원한다: 자바는 네트워크에서 동작되는 것을 기본으로 설계된 언어로, TCP/IP, HTTP, FTP같은 프로토콜을 처리할 수 있는 라이브러리를 가지고 있다. 다른 언어에 비해 네트워크 관련 프로그램을 개발할 수 있다는 장점이 있다.
-안전하다: 자바는 네트워크 환경에서 운영되는 언어이므로 다른 언어보다 더욱 안정성이 요구된다. 자바는 안정성을 저해시킬 수 있는 작업들이 불가능하게끔 설계되어, 보다 안전한 언어이다.
3. 객체 지향 언어 (Object-Oriented-Language)
(1) 객체: 현실에 존재하는 모든 것. 형태를 띠는 *속성(state)과 *기능(behavior)이 있어야 한다. (추상화 된 카테고리x)
객체 지향 프로그래밍의 가장 기본적인 단위와 시작점이다.
(2) 객체 지향 언어(Object-Oriented-Language):
-프로그램을 다수의 객체로 만들고, 이들끼리 서로 상호작용 하도록 만드는 프로그래밍 언어이다.
=프로그램을 그저 데이터와 처리방법으로 나누는 것이 아닌, 프로그램을 다수의 "객체'로 만들고, 이들이 서로 상호작용 하게끔 하는 만드는 언어이다.(ex: 자동차 부품-자동차의 유기적인 관계)
-객체 지향 언어는 자바 뿐만 아니라, C#, 플러터 등 다른 언어에도 적용되는 개념이다.
(3) 객체 지향 언어의 특징
-캡슐화(Incapsulation): 외부로부터 클래스에 정의된 속성과 기능들을 보호하고, 필요한 부분만 노출하여, 객체의 독립성과 책임 영역을 지킨다.
-상속(Inheritance): 클래스간 공유하는 속성과 기능은 한 번만 정의해두고, 다시 재사용한다. 상위 클래스의 속성과 기능을 하위 클래스에서 그대로 사용하거나, 선택적으로 재정의한다. (ex: 메서드 오버라이딩(method overriding))
-다형성(Polymorphism): 객체 지향 언어의 꽃이다.
어떤 객체의 속성이나, 기능이 상황에 따라 여러가지 형태를 가질 수 있다.
(ex: 메서드 오버라이딩(method overriding), 메서드 오버로딩(method overloading))
-추상화(Abstraction): 불필요한 세부사항을 제거하고, 가장 본질적이고 중요한 부분만을 표현한다.
(ex: 추상 클래스(abstract class), 인터페이스(Interface))
-메서드 오버라이딩(Method overriding): 객체 지향 프로그래밍에서 서브/자식 클래스가 슈퍼/부모 클래스에서 정의된 내용을 재정의하는 것.
-메서드 오버로딩(Method overloading): 같은 이름의 메소드를 중복하여 정의하는 것.-추상 클래스(Abstract class): 하나 이상의 추상 메소드를 포함하는 클래스. 다형성을 가지는 메소드의 집합을 정의하게 해준다. 반드시 사용되어야 하는 메소드를 추상 클래스에 추상 메소드로 선언해두면, 이 클래스를 상속받는 모든 클래스는 이 추상 메소드를 재정의해야한다.
-인터페이스(Interface): 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스이다.
728x90반응형'Java > 기본 개념 및 클래스' 카테고리의 다른 글
[Java] 5. 상수 (0) 2024.04.10 [Java] 4. 데이터 타입과 비트, 바이트, 아스키코드 (0) 2024.04.09 [Java] 3. 변수의 규칙 (0) 2024.04.09 [Java] 2. 변수 선언 및 사용하기 (0) 2024.04.09 [Java] 1. main 함수, 출력하기 (0) 2024.04.09 다음글이전글이전 글이 없습니다.댓글