HELLO, WORLD!
자바(Java)는 대표적인 객체 지향 프로그래밍 언어 중 하나로 썬 마이크로시스템즈에서 처음 발표했습니다. 초기의 자바는 가전 제품에 탑재할 프로그래밍 언어로 개발되었지만, 지금은 스마트폰을 비롯, 각종 장비와 데스크톱에서 실행되는 애플리케이션을 개발하는 중추적인 언어로 자리매김하였습니다.
파이썬 등 여러 언어가 뜨고 있지만..여전히 많이 사용되는 언어 !
자바는 유닉스 기반의 배경을 가지고 있기 때문에, C++의 조상인 C언어와 비슷합니다.
자바를 다른 컴파일 언어와 구분 짓는 가장 큰 특징은 컴파일된 코드가 플랫폼에 독립적이라는 점!
자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트코드라는 특수한 바이너리 형태로 변환한다.
바이트코드를 실행하기 위해서는 JVM(자바 가상 머신, Java Virtual Machine)이라는 특수한 가상 머신이 필요한데, 이 가상 머신은 자바 바이트코드를 어느 플랫폼에서나 동일한 형태로 실행시킨다. 때문에 자바로 개발된 프로그램은 CPU나 운영 체제의 종류에 관계없이 JVM을 설치할 수 있는 시스템에서는 어디서나 실행할 수 있다.
자바의 특징
💡 이식성이 높은 언어이다
자바는 운영체제에 독립적인 언어이다. 이식성이란 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 말한다. 자바 언어로 개발된 프로그램은 소스 파일을 수정하지 않아도, 자바 실행 환경(JRE)이 설치되어 있는 모든 운영 체제에서 실행 가능하다.
💡 객체 지향 언어이다
객체 지향 프로그래밍(Object Oriented Programming, OOP)이란 프로그램을 개발하는 기법으로, 부품에 해당하는 객체들을 먼저 만들고 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법을 말한다. 자바는 100% 객체 지향 언어이며, 객체를 만들기 위해 설계도인 클래스를 작성하고 객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어 낸다. 또한 객체 지향 언어가 가져야 할 캡슐화, 상속, 다형성 기능을 완벽하게 지원한다.
💡 함수적 스타일 코딩을 지원한다
함수적 프로그래밍은 대용량의 데이터 병렬 처리와 이벤트 지향 프로그래밍을 위해 적합하기 때문에 최근 들어 다시 주목받고 있다. 자바는 이 함수적 프로그래밍을 위해 람다식을 자바 8부터 지원한다. 람다식을 사용하면 컬렉션 요소를 필터링, 매핑, 집계 처리하는게 쉬워지고, 코드가 매우 간결해진다는 장점이 있다.
💡 메모리를 자동으로 관리한다
C++이 메모리 관리를 위해 개발자가 직접 코드를 작성해야 하는 반면, 자바는 개발자가 메모리에 직접 접근할 수 없으며 자바가 직접 메모리를 관리한다. 객체를 생성할 때 자동적으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 Garbage Collector를 실행시켜 자동적으로 사용하지 않는 객체를 제거한다. 따라서 개발자는 메모리 관리의 수고스러움을 덜고, 코딩에 좀 더 집중할 수 있다.
💡 다양한 애플리케이션을 개발할 수 있다
자바는 윈도우, 리눅스, 유닉스, 맥 등 다양한 운영체제(OS)에서 실행되는 프로그램을 개발할 수 있다. 또한 콘솔 프로그램, 클라이언트용 윈도우 애플리케이션, 서버용 웹 애플리케이션, 모바일용 안드로이드 앱에 이르기까지 거의 모든 곳에 실행되는 프로그램을 개발할 수 있다.
💡 멀티스레드를 쉽게 구현할 수 있다
자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하고 있기 때문에 실행되는 운영체제에 상관없이 멀티 스레드를 쉽게 구현할 수 있다.
💡 동적 로딩(Dynamic Loading)을 지원한다
애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 각 객체가 필요한 시점에 클래스를 동적 로딩해서 생성한다. 또한 유지보수 시 해당 클래스만 수정하면 되기 때문에 전체 애플리케이션을 다시 컴파일할 필요가 없다. 따라서 유지보수가 쉽고 빠르다.
💡 오픈소스 라이브러리가 풍부하다
자바는 오픈소스 언어이기 때문에 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스가 많다. 오픈소스 라이브러리를 사용하면 개발 시간을 단축하면서 안정성이 높은 애플리케이션을 쉽게 개발할 수 있다.
💡 속도가 느리다
자바는 한 번의 컴파일링으로 실행 가능한 기계어가 만들어지지 않고 JVM에 의해 기계어로 번역되고 실행하는 과정을 거치기 때문에 C나 C++의 컴파일 단계에서 만들어지는 완전한 기계어보다는 속도가 느리다. 그러나 바이트 코드를 기계어로 변환해주는 JIT 컴파일러 같은 기술 적용으로 JVM의 기능이 향상되어 속도의 격차가 많이 줄어들었다.
💡 예외처리가 불편하다
자바는 다른 언어들과 달리 프로그램 실행 시 발생할 수 있는 예외(Exception)들을 개발자가 직접 선언하여 처리해야 한다. 그렇지 않으면 아예 컴파일이 되지 않는다.
'👩💻TIL > JAVA' 카테고리의 다른 글
[자바/JAVA] toString()과 String.valueOf()의 차이점 비교 (0) | 2020.05.08 |
---|---|
[자바/JAVA ] 자바에서 세션(Session) 사용법 간단정리 (0) | 2020.05.07 |
[JUnit] JUnit을 이용한 단위 테스트하기+단정(assert)메소드 정리 (2) | 2020.03.27 |
[자바(JAVA) 개념] 클래스(class) 선언방법 / 필드 / 생성자 (0) | 2019.12.01 |
[자바(JAVA) 개념]- 객체 / 객체지향 프로그래밍의 특징 (2) | 2019.12.01 |
댓글