자바(JAVA)란?

이애옹·2022년 10월 3일
0
post-thumbnail
post-custom-banner

💬 엄청 기초적이면서도 아직은 좀 어려운 개념!!!!!!
자바란 과연 무엇일까🤔

📝 자바란?

📌 자바의 의미

1995년 미국의 '썬마이크로시스템즈'라는 회사에서 개발한 객체지향 언어로,
컴퓨터 프로그램(애플리케이션)을 만드는 데 사용된다.
현재 17버전까지 출시되었다.

그렇다면 자바는 어디에 사용될까?


출처: http://www.soen.kr/book/java/book/124.htm

보이는것처럼 웹개발뿐만 아니라 모바일, 애플리케이션 개발에도 두루두루 사용된다.

📌 자바의 특징

1. OOP(객체지향언어프로그래밍)

자바는 객체지향프로그래밍언어이다!!
객체지향프로그래밍의 대표적 특징에는 상속,캡슐화(은닉),다형성,추상화
총 4가지가 있는데, 이 4가지 특성을 이용하면 코드의 재사용성이 증가하고 유지보수가 쉬워진다.

객체지향에 대해서는 다음에 더 자세하게 다뤄보겠다!😅

2. 자동 메모리 관리

자바는 C/C++ 처럼 개발자가 직접 메모리를 해제하는것이 아닌,
JVM이 지속적으로 메모리를 감시하면서 더이상 사용되지 않는 메모리를 해제시켜준다!!

여기서 자바는 Garbage Collection을 통해 메모리 관리를 자동으로 수행해준다.

3. 독립적인 운영체제

자바는 Java Virtual Machine 위에서 돌아가기 때문에 자바의 개발 환경과 배포환경이 다르더라도 프로그램을 다시 컴파일 할 필요 없이 실행 가능하다! 

Java Virtual Machine에서 별도의 Java Compiler를 통해 사용자의 코드를 Byte 코드로 변환하기때문에, 모든 자바 프로그램은 이론적으로 CPU나 운영체제의 종류와 무관하게 동일하게 동작합니다.


Java Virtual Machine 구조 (출처:위키피디아)

4. 멀티쓰레드 프로그래밍 가능

자바는 하나의 프로그램에서 여러 개의 쓰레드가 동시에 실행할 수 있는 환경을 지원한다.
또한 C/C++은 운영체제의 도움을 받아 멀티 쓰레드를 수행하지만,
자바는 운영체제 지원없이 멀티스레드 프로그래밍이 가능하다.

멀티스레드란?
여러 스레드(프로그램의 실행단위, 프로세스 내 주소공간 및 자원 공유함)를 동시에 실행시키는 응용프로그램을 작성하는 기법입니다. 장점은 프로세스 내 메모리 공유를 통해 시스템 자원 소모가 줄어든다는 점이지만, 반면에 자원을 공유하기 때문에 충돌이 일어날 수 있습니다.

멀티쓰레드 구현방법
1) Thread 클래스 (화이트박스 방식)
: 자바에서 스레드를 만들기 위해 Thread class 상속하여 스레드를 생성합니다.
( Thread pool : 필요시 스레드를 가져오거나 이전 코드에서 실행완료되었을 때 재사용하는 풀)
2) Runnable 인터페이스 (블랙박스 방식)
: Thread class와 같이 자바에서 스레드 실행시키는 인터페이스입니다.
: 다중상속이 지원되기 때문에 Thread clas보다 많이 쓰입니다 

5. 동적 로딩(Dynamic loading)을 지원

자바는 애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 
객체가 필요한 시점에 클래스를 동적 로딩하여 생성한다.

동적로딩(Dynamic Loading)은 클래스 일부 변경 시 다시 컴파일하지 않아도 되는 이점이 있으며, 비교적 적은 작업으로 처리할 수 있는 유연성을 동적로딩이 제공한다.

반면에 그때 그때 메모리에서 불러오기 때문에 프로그램 실행 속도가 정적로딩에 비해 느리다.
(정적 로딩은 프로그램 실행 시 모든 실행파일이 메모리에 적재되어 실행되는 로딩방법으로, 대표적으로 C언어가 해당)

👀 참고자료

profile
안녕하세요
post-custom-banner

0개의 댓글