자바란
자바는 1995년 미국의 '썬마이크로시스템즈'라는 회사에서 개발한 객체지향 언어이다.
객체지향언어란?
객체지향 프로그래밍(OOP, Object Oriented Programming)이란 프로그램을 개발하는 기법으로 객체(부품)을 만들고, 이를 조립하여 전체 프로그램을 완성하는 것을 말한다.
- 추상화
- 공통의 속성이나 기능을 묶어 이름을 붙이는 것(예: 나무,사자,뱀은 각 개체이고 이 객체들을 하나로 묶을 때 생물이라 묶을 수 있다.)
- 캡슐화
- 객체가 맡은 역활을 수행하기 위한 하나의 목적을 한데 묶는 것
- 외부에서 데이터 접근이 불가하고, 정해진 함수만을 이용해 접근
- 마치 캡슐로 감싼 형태
- 상속성
- 상위 개념의 특징을 하위 개념이 물려받는 것
- 상속을 받아 하위 개념에서는 기능 추가 및 수정이 가능하다.(예: 상위개념 - 2G 휴대폰(기본 전화기능) 하위개념 - 스마트폰(기본 전화기능 강화(인터넷 전화))
- 다형성
- 상위 개념에서 물려받은 함수를 하위 개념에서는 기능추가 또는 기능수정(오버라이딩)을 하여 사용할 수 있다.
자바 특징
- 자바는 객체지향 언어이다.
- 이식성이 높다
- 운영체제(ex:window)위에 설치되는 자바실행환경 덕에 모든 운영체제에서 실행가능하다
- 예 : windows -> jvm(Java Virtual Machine)설치 -> 자바사용
windows 운영체제가 다른 OS로 변경되어도 JVM 설치로 인해 운영체제 상관없이 실행가능하다
- 인터프린터 언어이다.
- 컴파일(한번에 일처리) 언어인 동시에 인터프리터(일해야 할때만 일처리) 언어이다.
- 처음에는 인터프리터 언어로 사용되다, 성능향상을 위해 컴파일 언어의 장점을 가져왔다.(JIT 개념은 추후에 작성)
- 메모리를 자동으로 관리한다.(JVM에서 관리해준다.)
- 참조되지 않는 객체는 GC(Gabage Collector)를 실행시켜 객체를 정리해 준다.
- 멀티 스레드 구현이 된다.(프로그램 > 프로세스 > 스레드 하위종속 개념으로 이루어져 있으며 멀티 스레드를 구성하여 프로그램을 작성할 수 있다.)
- 분산환경을 지원한다(TCP/IP 라이브러리 지원)
- 오픈 소스 라이브러리가 풍부하다.(오픈소스 언어이기때문에 라이브러리 및 오픈소스의 양이 방대하다.)
- 유지보수가 편하다(객체를 조립하여 프로그래밍하기 때문에 수정할 부분이 적어진다.)
단점
- OS에서 바로 실행되는 것이 아니고 위에서 설명하였던 JVM이 자바를 실행하기 때문에 타 언어에 비해 실행 속도가 느리다.
- 예외처리를 많이 해야 한다.
- 소스 코드의 길이가 길다.