프로그래밍 언어/자바

자바 개요

닉네임못짓는사람 2020. 7. 29. 12:24
반응형

안녕하세요. 이번 카테고리에선 자바언어에 대해서 알아보도록 하겠습니다.

 

자바는 여러 가지 프로그래밍 언어 중에서도 최상위권에 위치하고 있을 정로도

많은 사람들에게 사랑받고 있는 프로그래밍 언어입니다.

https://www.tiobe.com/tiobe-index/

 

index | TIOBE - The Software Quality Company

TIOBE Index for July 2020 July Headline: All time high for the R programming language The statistical programming language R has set a new record by moving from position 9 to position 8 this month. Some time ago it seemed like Python had won the battle of

www.tiobe.com

위의 링크로 들어가시면 프로그래밍 언어들의 순위를 확인하실 수 있는데,

C언어와 1, 2위를 다툴정도로 매우 인기 있는 언어라는 것을 한눈에 볼 수 있습니다

자바의 역사


그럼 이러한 자바의 역사부터 살펴보도록 합시다.

자바의 시작은 1991년 sun mycrosystems(썬)에서 고안된 오크라는 언어로부터 시작됩니다.

원래 이 오크의 목적은 가전제품에 탑재될 소프트웨어를 만들려 했던 제임스 고슬링과

아서 밴 호프, 그리고 썬의 엔지니어들이 고안해낸 것이었습니다.

 

하지만 당시 여러 종류의 운영체제를 사용하는 컴퓨터들이 통신하는 인터넷이 등장하자,

운영체제에 독립적인 Oak를 효과적으로 사용할 수 있을 것이라 생각해 개발방향을 바꾸게 됩니다.

그러면서 이름을 자바(java)로 변경하고, 1996년 1월에 자바의 정식 버전을 발표했습니다.

 

자바의 특징


자바에는 여러가지 특징이 있지만, 그중 가장 큰 특징들은 책에서 말하길 다음과 같습니다.

1. 운영체제에 독립적이다.

   기존에 사용하던 언어들은 보통 하나의 운영체제에 맞춰서 프로그램을 개발하면

   이를 다른 프로그램에 적용시키려면 상당한 노력을 필요로 했습니다.

   하지만 자바는 이러한 단점을 JVM이란 것을 사용해서 해결하도록 했습니다.

   JVM이란 자바 프로그램과 운영체제 사이에서 중간다리 역할을 해주는 가상 머신입니다.

   자바 프로그램은 이 JVM하고만 통신하여 정보를 주고받고, JVM은 전달받은 정보를

   운영체제가 이해할 수 있도록 변환해줍니다.

   따라서 어떠한 운영체제에서 자바 프로그램을 개발하더라도 JVM을 사용하면 이 프로그램은

   운영체제에 독립적이라고 할 수 있는 것입니다.

   여기서 주의해야 할 점은, 자바 프로그램 자체는 운영체제에 독립적이지만

   JVM은 운영체제에 종속적이기 때문에 운영체제에 따라 여러가지 버전이 존재하고 있습니다.

2. 객체지향 언어이다.

   자바는 대표적인 객체지향 언어 중 하나입니다. 객체지향이란 단어가 생소하신 분들도 계실 텐데,

   밑에서 객체지향에 대해서 설명해보도록 하겠습니다.

 

3. 배우기 쉽다.

   자바는 C++에서 기본 구문을, 스몰톡이라는 객체지향 언어에서 객체지향 관련 구문을 가져와서

   장점은 취하고, 불필요한 부분은 버리고 단순화함으로써 간결하고 이해하기 쉬운 코드를

   수 있도록 했다고 합니다. 때문에 다른 객체지향 언어보다 비교적 배우기 쉽다고 적혀있습니다.

   사실 전 처음 배웠던 프로그래밍 언어가 자바였는데, 프로그래밍이라는 것 자체가 생소했던

   탓인지, 재능이 없는 건지.. 그다지 쉬웠던 것 같지는 않네요.

 

4. 자동 메모리 관리

   자바는 메모리를 따로 관리해주는 가비지 컬렉터라는 것이 존재합니다. 때문에 프로그래머는

   메모리를 관리하기 위해 골머리를 썩히지 않아도 되고, 코딩에 집중할 수 있게 해 줍니다.

 

5. 네트워크와 분산처리를 지원한다.

   자바는 인터넷과 대규모 분산 환경을 염두에 두어서인지, 풍부하고 다양한 네트워크 프로그래밍

   라이브러리를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발할 수 있습니다.

 

6. 멀티쓰레드를 지원한다.

   보통 멀티쓰레드 지원은 사용되는 운영체제에 따라 구현 방법, 사용방법이 상이하며

   처리 방식도 다릅니다. 허나 자바의 멀티쓰레드 프로그램은 시스템과 상관없이 구현 가능하고,

   관련 라이브러리가 제공되기 때문에 구현도 쉽습니다.

   쓰레드는 간단하게 프로그램 내에서의 일꾼이라고 생각하시면 되는데,

   밑에서 좀 더 자세하게 설명해보겠습니다.

글만 너무많아서 그려봣습니다..

7. 동적 로딩을 지원한다.

   자바 어플리케이션은 보통 여러개의 클래스로 구성되어있습니다.

   클래스는 보통 객체의 설계도라고 설명하는 경우가 많은데, 자세한 설명은 추후에 하겠습니다.

   자바는 실행 시에 모든 클래스가 로딩되지 않고, 필요시에 클래스를 로딩하여 사용할 수 있습니다.

   이를 동적 로딩이라고 이야 기 합니다. 또한 일부 클래스가 변경되어도 어플리케이션 전체를 다시

   컴파일하지 않아도 되며, 어플리케이션에 변경사항이 발생해도 비교적 적은 작업으로

   처리할 수 있는 유연한 어플리케이션 작성이 가능합니다. 

 

이상이 자바의 주요 특징 7가지입니다.

객체지향 언어란?


그럼 다음엔 객체지향 언어가 무엇인지에 대해서 알아보도록 하겠습니다.

사실 이 부분에 대해서 인터넷과 책을 찾아보고 설명하려고 노력해보았는데,

검색 도중 이해하기 매우 쉽게 예를 들어 설명해주신 글이 있어서 제가 어중간하게 설명하기보단

이 글을 보시는 게 더 도움이 되실 거라고 생각돼서 링크를 첨부하도록 하겠습니다.

https://www.slideshare.net/QooJuice/vs-60147566

 

절차지향 vs 객체지향

객체란 뭘까?

www.slideshare.net

 

다음은 위에서 언급했던 쓰레드입니다.

쓰레드란?


쓰레드에 대해서는 알고 있는 분들도 계시고, 모르는 분들도 계실 텐데, 위에서 말했듯이

프로그램에서 일하는 일꾼과 같은 것입니다. 이러한 일꾼들이 프로그램에 많이 있으면

그만큼 속도도 빨라지겠죠? 하지만 사실은 일꾼들이 일하기 위해선 프로세서, 즉 CPU가

이를 이를 움직여야 합니다. 여러분이 왼팔과 오른팔로 전혀 다른 작업을 해야 한다고

생각해볼까요? 이를 아무런 문제 없이 할 수 있는 사람은 거의 없을 것입니다.

 

때문에 왼팔로 작업을 하려면 오른팔을 잠깐 멈추어야 하고, 그 반대도 똑같을 것입니다.

프로세서도 마찬가지로 하나의 쓰레드를 움직이려면 그동안 다른 쓰레드는 움직이지 못합니다.

때문에 쓰레드를 아주 많이 만든다고 해서 작업 속도가 급격히 빨라지진 않는다는 것입니다.

 

하지만 만약 프로세서가 여러 개라면, 이런 표현을 하긴 좀 그렇지만..

여러분의 뇌가 두 개여서 서로 독립적으로 생각을 하고, 왼팔과 오른팔에 각각 명령을

내릴 수 있다고 하면 어떨까요? 작업 속도가 매우 빨라지고 작업능률이 오르게 되겠죠.

이것이 흔히들 말하는 멀티 프로세서와 멀티쓰레드, 그리고 그 둘의 관계입니다.

 

자바의 개요는 이 정도로 설명을 마치도록 하고,

다음 글에서 자바 프로그램을 만들기 위한 컴파일러를 설치해보도록 하겠습니다.

감사합니다.

반응형

'프로그래밍 언어 > 자바' 카테고리의 다른 글

자바 5. 형변환  (0) 2020.08.07
자바 4. 자료형-2  (0) 2020.08.06
자바 3. 자료형-1  (0) 2020.08.05
자바 2. 변수와 상수  (0) 2020.08.03
자바 1. 개발 툴 설치  (0) 2020.07.30