검수요청.png검수요청.png

"자바"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(역사)
잔글 (같이 보기)
 
(사용자 7명의 중간 판 24개는 보이지 않습니다)
1번째 줄: 1번째 줄:
[[파일:자바 로고.png|썸네일|200픽셀|'''자바'''(Java) 로고]]
+
[[파일:자바 로고.png|썸네일|200픽셀|'''자바'''(Java)]]
[[파일:자바 글자.png|썸네일|300픽셀|'''자바'''(Java) 로고와 글자]]
+
[[파일:자바 글자.png|썸네일|300픽셀|'''자바'''(Java)]]
 +
[[파일:제임스 고슬링.jpg|썸네일|200픽셀|'''[[제임스 고슬링]]'''(James Arthur Gosling)]]
  
'''자바'''(Java)는 1995년 미국 [[썬 마이크로시스템즈]](SUN Microsystems) 회사의 '''[[제임스 고슬링]]'''(James Gosling)이 다른 연구원들과 함께 개발한 [[객체 지향 프로그래밍 언어]](OOP)이다. 2010년 썬 마이크로시스템즈 회사가 [[오라클 (회사)|오라클]]에 인수되면서, 자바도 오라클 회사로 넘어갔다. [[JSP]]는 자바 언어로 만든 웹용 스크립트 언어이다.
+
'''자바'''(Java)는 1995년 미국 [[썬 마이크로시스템즈]](SUN Microsystems) 회사의 [[제임스 고슬링]](James Gosling)이 다른 연구원들과 함께 개발한 [[객체 지향 프로그래밍 언어]](OOP)이다. 2010년 썬 마이크로시스템즈 회사가 [[오라클 (회사)|오라클]]에 인수되면서, 자바도 오라클 회사로 넘어갔다. [[JSP]]는 자바 언어로 만든 웹용 [[스크립트 언어]]이다. 자바라는 이름은 인도네시아 자바섬에서 생산한 [[커피]]의 이름에서 따왔다. 자바의 로고는 커피잔이고, 마스코트는 [[듀크]](Duke)이다.  
자바라는 이름은 인도네시아 자바섬에서 생산한 커피의 이름에서 따왔다. 자바의 로고는 커피잔이고, 마스코트는 듀크(Duke)이다.
 
 
 
[[파일:넴 글자.png|썸네일|300픽셀|'''[[넴]]'''(NEM)]]
 
 
 
사용자별로 맞춤형 블록체인을 제작할 수 있는 스마트 자산 시스템을 위한 [[암호화폐]]인 [[넴]](NEM)<ref>'''[[넴]]'''(NEM)은 [[젬]](XEM) 또는 [[뉴 이코노미 무브먼트]](New Economy Movement)로 불리는 [[암호화폐]]이다.</ref>은 자바(Java) 언어로 개발되었다.  
 
  
 
== 개요 ==
 
== 개요 ==
16번째 줄: 12번째 줄:
  
 
== 특징 ==
 
== 특징 ==
 +
* '''객체 지향 프로그래밍 언어''' : 자바는 [[객체]]를 중심으로 [[메소드]]가 [[데이터]]에 접근해서 객체의 속성을 조작하는 형태의 [[객체 지향 프로그래밍 언어]]이다.
 +
* '''독립성''' : 자바는 [[자바 가상머신]](JVM, Java Virtual Machine)이 [[바이트코드]]인 클래스 파일(.class)을 생성하고, 이 파일의 바이트 코드를 읽은 뒤 [[기계어]]로 바꾸어 실행한다. 따라서 각 [[플랫폼]]에 맞는 자바 가상머신만 설치되어 있으면 어디서든 사용할 수 있기 때문에, 자바는 플랫폼에 독립적인 언어이다.
 +
* '''가독성''' : 자바는 사람들이 쉽게 이해할 수 있도록 만들어진 [[고급언어]]로서, 다른 언어에 비해 코드가 간단하고 가독성이 뛰어나 컴퓨터 전공자가 아니어도 쉽게 이해하고, 프로그래밍을 할 수 있다.
 +
* '''안정성''' : 자바는 배우기 쉽고 대중적인 언어라서 참고자료나 [[오픈 소스]]가 많고, 대형 프로젝트들, 금융권에서도 많이 실행되어 왔기 때문에 안정성이 입증되었다.
 +
* '''보안성''' : 자바는 네트워크 분산 처리 환경에서 사용하기 위해 고안된 언어이기 때문에, 자바의 보안 시스템은 각종 설정을 통해 [[네트워크]] 및 파일 접근을 통제한다.
  
* '''객체 지향 프로그래밍 언어''' : 자바는 [[객체]]를 중심으로 [[메소드]]가 데이터에 접근해서 객체의 속성을 조작하는 형태의 [[객체 지향 프로그래밍 언어]]이다.
+
== 활용 ==
 
+
자바 프로그래밍 언어는 호환성이 매우 뛰어나다. 때문에 프로그램이 이후 다른 운영체제나 환경에서 작업을 하기 위해서는 변환을 거쳐야 하는 다른 프로그래밍 언어들과 다르게 변환 없이도 호환이 가능하다. 또한 자바는 보안성이 매우 뛰어나다. 자바라는 프로그램 자체가 보안성이 뛰어나기도 하며 다른 프로그래밍 언어들과 비교해도 보안성이 앞서 있다. 이런 자바 프로그램 언어를 활용하는 분야는 웹 개발, 웹 애플리케이션, [[데이터베이스]], [[빅데이터]], 시스템 네트워크, 서버 네트워크 등으로, 다양한 분야에서 활용이 가능하다.<ref>노영현, 〈[https://kgit.tistory.com/82 자바프로그래밍 언어란? 활용분야/자격증/학습단계], 《IT전문학원 KG아이티뱅크 블로그》 , 2017.01.20</ref>
* '''독립성''' : 자바는 [[자바가상머신]]('''JVM''', Java Virtual Machine)이 [[바이트코드]]인 클래스 파일(.class)을 생성하고, 이 파일의 바이트 코드를 읽은 뒤 [[기계어]]로 바꾸어 실행한다. 따라서 각 [[플랫폼]]에 맞는 JVM만 설치되어 있으면 어디서든 사용할 수 있기 때문에, 자바는 플랫폼에 독립적인 언어이다.
 
 
 
* '''가독성''' : 자바는 사람들이 읽고 쉽게 이해할 수 있도록 만들어진 [[고급언어]]로서, 다른 언어에 비해 코드가 간단하고 가독성이 뛰어나 컴퓨터 전공자가 아니어도 쉽게 이해하고, 프로그래밍을 할 수 있다.
 
 
 
* '''안정성''' : 자바는 배우기 쉽고 대중적인 언어라서 참고자료나 [[오픈 소스]]가 많고, 대형 프로젝트들도 많이 실행되어 왔기 때문에 안정성이 입증되었다.
 
 
 
* '''보안성''' : 자바는 네트워크 분산 처리 환경에서 사용하기 위해 고안된 언어이기 때문에, 자바의 보안 시스템은 각종 설정을 통해 [[네트워크]] 및 파일 접근을 통제한다. 따라서 [[바이러스]]가 침투하지 못하는 구조를 가졌고 [[메모리]] 내에서 데이터 접근을 제한한다.
 
  
== 종류 ==
+
사용자별로 맞춤형 [[블록체인]]을 제작할 있는 스마트 자산 시스템을 위한 [[암호화폐]][[]](NEM)<ref>'''[[]]'''(NEM)은 [[]](XEM) 또는 [[뉴 이코노미 무브먼트]](New Economy Movement)로 불리는 [[암호화폐]]이다.</ref>자바(Java) 언어로 개발되었다.  
자바 이외에도 C, C++, 파이썬, 자바 스크립트, 펄, PHP 등의 다양한 프로그래밍 언어가 있다.
 
 
 
* '''[[C]]''' : C는 범용언어이다. 성능이 아주 중요한 [[애플리케이션]]에서 사용된다. 최근 인기가 많은 언어는 최소한 [[C]]의 문법적인 부분이라도 물려받고 있으며, [[C]]의 문법은 이해하는 데 어려움은 없으나 처음이라면 어려울 있다.
 
 
 
* '''[[C++]]''' : C++은 [[C]]와 비슷하지만, 객체지향 지원 및 몇 가지 발전된 기능을 가지고 있다. [[구글]],[[크롬]],[[파이어폭스]],[[마소 워드]],[[엑셀]],[[파워포인트]] 등이 모두 [[C++]]로 개발된 것이다.
 
 
 
* '''[[파이썬]]'''(python) : [[python]]쉽게 배우고 개발할 수 있게 만들어진 언어이다. 컴퓨터 공학과 기초수업에 많이 사용된다. [[우분투]]의 [[애플리케이션]]과 인스타그램의 웹서버가 [[python]]으로 개발되었다고 한다.
 
 
 
* '''[[자바 스크립트]]'''(Java script) : 자바 스크립트는 자바와 공통점이 하나도 없다. 웹을 위한 언어였으나 최근에는 서버 쪽에도 쓰인다. 예전에는 단순히 웹에서 사용자와 상호작용을 하기 위해서 사용되던 언어였다. 하지만 현재 V8 엔진을 기반으로 만들어진 NodeJS 등으로 인하여 백엔드에서도 사용되고 있으며, 지금 가장 유행하는 언어 중 하나이다.
 
 
 
* '''[[]]'''(Perl) : 펄은 범용언어로 주로 방대한 문자열을 처리하는데 사용된다. 펄은 정규 표현형식의 대부이다. 긴 문자열을 어떤 의미를 추출할 때 최적의 언어이다.
 
 
 
* '''[[PHP]]''' : PHP는 웹 서버에서 주로 사용된다. 배우는 게 쉽고 [[데이터베이스]]에 쉽게 접근할 수 있도록 해주기 때문에 많은 인기를 얻었다.<ref>KENDRICK,
 
〈[https://blog.sonim1.com/207 프로그래밍 언어들의 간단한 특징]〉, 《개인블로그》 , 2017-08-25</ref>
 
 
 
== 활용 ==
 
자바 프로그래밍 언어는 호환성이 매우 뛰어나서 다른 프로그래밍 언어들이 프로그래밍 하고 다른 운영체제나 환경에서 작업을 하려 하면 변환을 거쳐야 하는데 자바 프로그래밍은 그런 게 없다. 다른 하나는 보안성이다. 자바라는 프로그램 자체가 보안성이 뛰어나기도 하며 다른 프로그래밍 언어들과 비교했을 때 보안성도 앞서있는 게 특징이다. 이런 자바 프로그램 언어를 활용하는 분야는 웹 개발, 웹 애플리케이션, [[데이터베이스]], 빅데이터, 시스템 네트워크, 서버 네트워크 등 넓은 분야에서 활용이 가능하다.<ref>노영현, 〈[https://kgit.tistory.com/82 자바프로그래밍 언어란? 활용분야/자격증/학습단계]〉, 《IT전문학원 KG아이티뱅크 블로그》 , 2017.01.20</ref>
 
  
 
== 문제점 ==
 
== 문제점 ==
 
* '''속도 문제'''
 
* '''속도 문제'''
: 자바는 C/C++, Pascal, Fortran 언어와 비교했을 때보다 속도가 느리다. 자바는 C/C++과 비교했을 때 느린 속도이지만, 다른 고수준 언어들보다는 그리 떨어지지 않는다.
+
: 자바는 C/C++, [[파스칼]](Pascal), [[포트란]](Fortran) 언어에 비해 속도가 느리다. 자바는 C/C++과 비교했을 때 느린 속도이지만, 다른 고수준 언어들보다는 그리 떨어지지 않는다.
  
 
* '''JVM 로딩 속도 문제'''
 
* '''JVM 로딩 속도 문제'''
: 자바의 심각한 단점 중 하나는, 실행하는 과정에서 [[Java Virtual Machine]]이 반드시 완벽하게 로딩되어야 하므로 프로그램의 초기 시작 시각이 완전한 이진 코드로 컴파일된 프로그램을 실행하는 것에 비해 오래 걸리는 것이다. 아무것도 안 하고 콘솔 화면에 기본적인 문장을 찍기만 하는 프로그램이 실행되는 데에도 thread가 많이 뜨는 것을 볼 수 있다. 특히 프로그램에서 불필요한 기능을 끌어들이는 것은 매우 심각한 문제이다.
+
: 자바의 심각한 단점 중 하나는, 실행하는 과정에서 자바 가상머신이 반드시 완벽하게 로딩되어야 하므로 프로그램의 초기 시작 시간이 완전한 이진 코드로 컴파일된 프로그램을 실행하는 것에 비해 오래 걸린다는 것이다. 아무것도 안 하고 콘솔 화면에 기본적인 문장을 찍기만 하는 프로그램이 실행되는 데에도 스레드(thread)가 많이 뜨는 것을 볼 수 있다.
  
 
* '''가비지 컬렉션(Garbage Collection)에 의한 실행 지연 문제'''
 
* '''가비지 컬렉션(Garbage Collection)에 의한 실행 지연 문제'''
: 가비지 컬렉션(Garbage Collection)에 의한 메모리 프리징 현상이 초반부터 지속적 해서 자바의 문제점이었다. 멀쩡하게 동작해야 할 프로그램이 끊기는 현상이 발생하는 것이다. 오늘날 자바의 문제는 바이트 코드 변환으로 인한 속도 저하보다 이 가비지 컬렉션의 영향이 더 크다고 볼 수 있다. 이러한 문제점은 가비지 컬렉션을 지원하는 다른 프로그래밍 언어들도 마찬가지이긴 하지만 실행속도와 함께 자바 초기부터 꾸준히 문제로 꼽혀왔지만, 버전이 올라갈수록 다양하게 개선되어 왔다.
+
: 가비지 컬렉션(Garbage Collection)에 의한 메모리 프리징 현상이 초반부터 지속적 해서 자바의 문제점이었다. 멀쩡하게 동작해야 할 프로그램이 끊기는 현상이 발생하는 것이다. 오늘날 자바의 문제는 바이트 코드 변환으로 인한 속도 저하보다 이 가비지 컬렉션의 영향이 더 크다고 볼 수 있다. 이러한 문제점은 가비지 컬렉션을 지원하는 다른 프로그래밍 언어들도 마찬가지이긴 하다. 하지만 자바 초기부터 실행속도와 함께 꾸준히 문제점으로 지적받아 왔고, 다행이도 버전이 올라갈수록 다양하게 개선되는 모습을 보이고 있다. 자바 17버전의 zgc 는 GC 작업시 멈추는 기간이 1ms 이하라서 멈추는걸 못느낀다고 봐도 무방하다.
  
* '''소스 코드 길이'''
+
* '''장황한 소스 코드 길이'''
: 자바는 소스코드의 길이가 다른 언어에 비해 상당히 긴 편이다. 같은 기능을 하는 코드를 짠다고 했을 때 다른 언어에 비해 입력해야 할 양이 많다. 기본적인 구조를 짜기 위해서 무조건 의무적으로 작성해 주어야만 하는 서식과 코드의 분량이 많다.
+
: 자바는 소스코드의 길이가 다른 언어에 비해 상당히 긴 편이다. 같은 기능을 하는 코드를 짠다고 했을 때 다른 언어에 비해 입력해야 할 양이 많다. 기본적인 구조를 짜기 위해서 무조건 의무적으로 작성해 주어야만 하는 서식(보일러 플레이트)이랑 코드의 분량이 많다.
  
 
* '''언어적 불편함'''
 
* '''언어적 불편함'''
: 자바는 모든 동작이 객체 상위에서 이루어지게 함으로써 명사형으로 생각하는 것을 강제한다. 자바에는 전역 함수가 없고 모든 함수는 어떤 클래스에 종속되어 있다. 이 때문에 기능적인 부분을 작성하는데 자잘한 클래스들을 작성해야 한다는 불편함이 있다. 이런 명사 중심적 생각은 확실히 많은 경우 편리하나 동사 중심으로 생각해야 하는 상황도 생각보다 흔하다는 것이 문제이다. 예를 들어, 퀵 소트를 자바에서 엄격하게 의도된 대로 짜려면 quickSort(array)라는 함수 대신 QuickSorter라는 객체의 생성자에 배열을 넣고, 그 생성자를 참조하는 참조변수를 이용해 run()을 호출하여 동작시켜야 한다.<ref>나무위키, 〈[https://namu.wiki/w/Java Java단점]〉,《나무위키》 , 2019-06-22</ref>
+
: 자바는 모든 동작이 객체 상위에서 이루어지게 함으로써 명사형으로 생각하는 것을 강제한다. 자바에는 전역 함수가 없고 모든 함수는 어떤 클래스에 종속되어 있다. 이 때문에 기능적인 부분을 작성하는데 자잘한 클래스들을 작성해야 한다는 불편함이 있다. 이런 명사 중심적 생각은 확실히 많은 경우 편리하나 동사 중심으로 생각해야 하는 상황도 생각보다 흔하다는 것이 문제이다. 예를 들어, 퀵 소트를 자바에서 엄격하게 의도된 대로 짜려면 quickSort(array)라는 함수 대신 QuickSorter라는 객체의 생성자에 배열을 넣고, 그 생성자를 참조하는 참조변수를 이용해 run()을 호출하여 동작시켜야 한다.<ref>〈[https://namu.wiki/w/Java Java단점]〉,《나무위키》 , 2019-06-22</ref>
  
 
== 전망 ==
 
== 전망 ==
자바는 문제점도 있지만, 장점이 워낙 많은 언어이다. 자바는 인터넷 시대 가장 주목을 받았던 언어이다. 현재도 웬만한 기업의 서버 측 [[애플리케이션]]은 대부분 자바를 기반으로 하고 있다고 봐도 무방하다. 그리고 최근 블로그와 소규모 사업자의 사이트가 늘어나는 등 인터넷 웹사이트 수가 급증하고 있어 인터넷을 이용한 다양한 [[응용프로그램]]과 콘텐츠의 개발 필요성이 커지고 있다. 그리고 4차 산업 혁명이라는 기술로 [[IOT]], [[빅데이터]], [[앱]] 등의 기술이 많이 뜨고 있다. 여기서 이 모든 기술에 가장 기본이 되는 언어가 자바이다. 이에 따라서 자바의 필요성은 더욱 커지고 자바를 이용한 일자리에 대한 전망은 증가할 것으로 보인다. <ref>양정인력개발센터, 〈[https://blog.naver.com/edu8989/221342928040 웹프로그래머 전망, 취뽀하는 방법!(JAVA/PHP/자바스크립트/프로그래밍/코딩)]〉, 《양정인력개발센터 공식블로그》 , 2018-08-21</ref> 그런데 "자바는 죽었다"거나 "자바는 죽어가고 있다"는 이야기도 종종 들린다. 실제로 요즘은 자바보다 [[파이썬]](python)과 같은 언어를 주제로 세미나를 열면 인기가 더 많다.<ref>심재석, 〈[https://byline.network/2017/08/31-3/ “자바가 죽었다구요? 천만의 말씀!”]〉, 《바이라인 네트워크》 , 2017-08-31</ref>
+
자바는 문제점도 있지만, 장점이 워낙 많은 언어이다. 자바는 인터넷 시대 가장 주목을 받았던 언어이다. 현재도 웬만한 기업의 서버 측 [[애플리케이션]]은 대부분 자바를 기반으로 하고 있다고 봐도 무방하다. 그리고 최근 블로그와 소규모 사업자의 사이트가 늘어나는 등 인터넷 웹사이트 수가 급증하고 있어 인터넷을 이용한 다양한 [[응용프로그램]]과 콘텐츠의 개발 필요성이 커지고 있다. 그리고 4차 산업혁명이라는 기술로 [[IOT]], [[빅데이터]], [[앱]] 등의 기술이 많이 뜨고 있다. 여기서 이 모든 기술에 가장 기본이 되는 언어가 자바이다. 이에 따라서 자바의 필요성은 더욱 커지고 자바를 이용한 일자리에 대한 전망은 증가할 것으로 보인다.<ref>양정인력개발센터, 〈[https://blog.naver.com/edu8989/221342928040 웹프로그래머 전망, 취뽀하는 방법!(JAVA/PHP/자바스크립트/프로그래밍/코딩)]〉, 《양정인력개발센터 공식블로그》 , 2018-08-21</ref> 한편으로는 "자바는 죽었다"거나 "자바는 죽어가고 있다"는 이야기도 종종 들린다. 실제로 요즘은 자바보다 [[파이썬]](python)과 같은 언어를 주제로 세미나를 열면 인기가 더 많다.<ref>심재석, 〈[https://byline.network/2017/08/31-3/ “자바가 죽었다구요? 천만의 말씀!”]〉, 《바이라인 네트워크》 , 2017-08-31</ref>
  
그렇다면 [[파이썬]](python)과 자바의 차이점은 무엇일까? 자바 등의 언어에 비해서 [[파이썬]](python)은 배우기 쉬운 [[스크립트 언어]]이다. 최근에는 [[구글]]을 비롯한 유명 회사들이 [[파이썬]](python)으로 더 멋진 프로그램들을 선보이고 있어 더 주목을 받고 있다. 하지만 한국 스프링 사용자 모임(KSUG)의 토비 리(이일민)님은 절대 그렇지 않다고 말한다. 이 씨는 "자바는 여전히 가장 인기 있는 언어"라고 단언하였고, [[구글]] 트렌드 등을 살펴보면 여전히 자바는 1위를 기록하고 있고, 구인/구직 광고에서도 자바 개발자 수요가 가장 많다는 것이 근거라고 하였다. 또한 자바의 가치는 쉽게 떨어지지 않을 것이라고 전망하고 있다. 2000년 이후 자바에는 4번의 위기가 있었지만, 각종 커뮤니티와 생태계에 의해 위기를 극복하였고, 변화에도 성공하였기 때문이라고 말하고 있다.<ref>에이콘아카데미, 〈[https://acornzone.blog.me/221509112203 자바의 전망]〉, 《에이콘 아카데미》 , 2019-04-09</ref>         
 
 
 
{{각주}}
 
{{각주}}
  
78번째 줄: 53번째 줄:
 
*양정인력개발센터, 〈[https://blog.naver.com/edu8989/221342928040 웹프로그래머 전망, 취뽀하는 방법!(JAVA/PHP/자바스크립트/프로그래밍/코딩)]〉, 《양정인력개발센터 공식블로그》, 2018-08-21
 
*양정인력개발센터, 〈[https://blog.naver.com/edu8989/221342928040 웹프로그래머 전망, 취뽀하는 방법!(JAVA/PHP/자바스크립트/프로그래밍/코딩)]〉, 《양정인력개발센터 공식블로그》, 2018-08-21
 
*심재석, 〈[https://byline.network/2017/08/31-3/ “자바가 죽었다구요? 천만의 말씀!”]〉, 《바이라인 네트워크》, 2017-08-31
 
*심재석, 〈[https://byline.network/2017/08/31-3/ “자바가 죽었다구요? 천만의 말씀!”]〉, 《바이라인 네트워크》, 2017-08-31
*에이콘아카데미, 〈[https://acornzone.blog.me/221509112203 자바의 전망]〉, 《에이콘 아카데미》, 2019-04-09
+
*에이콘아카데미, 〈[https://acornzone.blog.me/221509112203 자바의 전망]〉, 《에이콘 아카데미》, 2019-04-
  
 
== 같이 보기 ==
 
== 같이 보기 ==
 +
* [[제임스 고슬링]]
 
* [[프로그래밍 언어]]
 
* [[프로그래밍 언어]]
 
* [[JSP]]
 
* [[JSP]]
 
* [[자바스크립트]]
 
* [[자바스크립트]]
 
* [[넴]]
 
* [[넴]]
 +
* [[자와섬|자와섬(자바섬)]]
  
 
{{프로그래밍 언어|검토 필요}}
 
{{프로그래밍 언어|검토 필요}}

2024년 6월 30일 (일) 11:45 기준 최신판

자바(Java)
자바(Java)
제임스 고슬링(James Arthur Gosling)

자바(Java)는 1995년 미국 썬 마이크로시스템즈(SUN Microsystems) 회사의 제임스 고슬링(James Gosling)이 다른 연구원들과 함께 개발한 객체 지향 프로그래밍 언어(OOP)이다. 2010년 썬 마이크로시스템즈 회사가 오라클에 인수되면서, 자바도 오라클 회사로 넘어갔다. JSP는 자바 언어로 만든 웹용 스크립트 언어이다. 자바라는 이름은 인도네시아 자바섬에서 생산한 커피의 이름에서 따왔다. 자바의 로고는 커피잔이고, 마스코트는 듀크(Duke)이다.

개요[편집]

자바는 컴퓨터 프로그래밍 언어 중의 하나로 썬 마이크로시스템즈(Sun Microsystems)라는 회사에서 개발하여 1996년 1월에 초기 버전이 발표된 객체 지향(object-oriented) 언어이다. 썬의 제임스 고슬링(James Gosling), 아서 밴 호프(Arthur van Hoff)와 같은 엔지니어들이 처음 설계하였다고 알려져 있다.[1] 초기에는 "오크(Oak)"으로 불렸으나 1995년 "자바(Java)"로 변경되었으며 웹의 출현으로 자바는 컴퓨터 언어 설계를 위해 더욱 활발하게 발전하게 되었다.[2]

역사[편집]

자바 언어는 1991년 6월 셋톱 프로젝트를 위해 제임스 고슬링이 만들었다. 자바는 썬 마이크로시스템즈제임스 고슬링과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어로서, 1991년 그린 프로젝트(Green Project)라는 이름으로 시작해 1995년 발표됐다. 처음에는 가전제품 내에 탑재해 동작하는 프로그램을 위해 개발했지만 현재 웹 애플리케이션 개발에 가장 많이 사용하는 언어 중 하나이며, 모바일 기기용 소프트웨어 개발에도 널리 사용되고 있다. 처음에는 C++을 확장해서 사용하려 했지만 C++로는 그들의 목적을 이루기에 부족하다는 것을 깨닫고 C++의 장점을 도입하고 단점을 보완한 새로운 언어를 개발한 것이 자바이다. 자바 플랫폼은 크게 자바 프로그래밍 언어, 자바 컴파일러, 자바 가상기계, 자바 프로그래밍 라이브러리, 기타 유틸리티 프로그램으로 구성되어 있다.[3]

특징[편집]

  • 객체 지향 프로그래밍 언어 : 자바는 객체를 중심으로 메소드데이터에 접근해서 객체의 속성을 조작하는 형태의 객체 지향 프로그래밍 언어이다.
  • 독립성 : 자바는 자바 가상머신(JVM, Java Virtual Machine)이 바이트코드인 클래스 파일(.class)을 생성하고, 이 파일의 바이트 코드를 읽은 뒤 기계어로 바꾸어 실행한다. 따라서 각 플랫폼에 맞는 자바 가상머신만 설치되어 있으면 어디서든 사용할 수 있기 때문에, 자바는 플랫폼에 독립적인 언어이다.
  • 가독성 : 자바는 사람들이 쉽게 이해할 수 있도록 만들어진 고급언어로서, 다른 언어에 비해 코드가 간단하고 가독성이 뛰어나 컴퓨터 전공자가 아니어도 쉽게 이해하고, 프로그래밍을 할 수 있다.
  • 안정성 : 자바는 배우기 쉽고 대중적인 언어라서 참고자료나 오픈 소스가 많고, 대형 프로젝트들, 금융권에서도 많이 실행되어 왔기 때문에 안정성이 입증되었다.
  • 보안성 : 자바는 네트워크 분산 처리 환경에서 사용하기 위해 고안된 언어이기 때문에, 자바의 보안 시스템은 각종 설정을 통해 네트워크 및 파일 접근을 통제한다.

활용[편집]

자바 프로그래밍 언어는 호환성이 매우 뛰어나다. 때문에 프로그램이 이후 다른 운영체제나 환경에서 작업을 하기 위해서는 변환을 거쳐야 하는 다른 프로그래밍 언어들과 다르게 변환 없이도 호환이 가능하다. 또한 자바는 보안성이 매우 뛰어나다. 자바라는 프로그램 자체가 보안성이 뛰어나기도 하며 다른 프로그래밍 언어들과 비교해도 보안성이 앞서 있다. 이런 자바 프로그램 언어를 활용하는 분야는 웹 개발, 웹 애플리케이션, 데이터베이스, 빅데이터, 시스템 네트워크, 서버 네트워크 등으로, 다양한 분야에서 활용이 가능하다.[4]

사용자별로 맞춤형 블록체인을 제작할 수 있는 스마트 자산 시스템을 위한 암호화폐(NEM)[5]은 자바(Java) 언어로 개발되었다.

문제점[편집]

  • 속도 문제
자바는 C/C++, 파스칼(Pascal), 포트란(Fortran) 언어에 비해 속도가 느리다. 자바는 C/C++과 비교했을 때 느린 속도이지만, 다른 고수준 언어들보다는 그리 떨어지지 않는다.
  • JVM 로딩 속도 문제
자바의 심각한 단점 중 하나는, 실행하는 과정에서 자바 가상머신이 반드시 완벽하게 로딩되어야 하므로 프로그램의 초기 시작 시간이 완전한 이진 코드로 컴파일된 프로그램을 실행하는 것에 비해 오래 걸린다는 것이다. 아무것도 안 하고 콘솔 화면에 기본적인 문장을 찍기만 하는 프로그램이 실행되는 데에도 스레드(thread)가 많이 뜨는 것을 볼 수 있다.
  • 가비지 컬렉션(Garbage Collection)에 의한 실행 지연 문제
가비지 컬렉션(Garbage Collection)에 의한 메모리 프리징 현상이 초반부터 지속적 해서 자바의 문제점이었다. 멀쩡하게 동작해야 할 프로그램이 끊기는 현상이 발생하는 것이다. 오늘날 자바의 문제는 바이트 코드 변환으로 인한 속도 저하보다 이 가비지 컬렉션의 영향이 더 크다고 볼 수 있다. 이러한 문제점은 가비지 컬렉션을 지원하는 다른 프로그래밍 언어들도 마찬가지이긴 하다. 하지만 자바 초기부터 실행속도와 함께 꾸준히 문제점으로 지적받아 왔고, 다행이도 버전이 올라갈수록 다양하게 개선되는 모습을 보이고 있다. 자바 17버전의 zgc 는 GC 작업시 멈추는 기간이 1ms 이하라서 멈추는걸 못느낀다고 봐도 무방하다.
  • 장황한 소스 코드 길이
자바는 소스코드의 길이가 다른 언어에 비해 상당히 긴 편이다. 같은 기능을 하는 코드를 짠다고 했을 때 다른 언어에 비해 입력해야 할 양이 많다. 기본적인 구조를 짜기 위해서 무조건 의무적으로 작성해 주어야만 하는 서식(보일러 플레이트)이랑 코드의 분량이 많다.
  • 언어적 불편함
자바는 모든 동작이 객체 상위에서 이루어지게 함으로써 명사형으로 생각하는 것을 강제한다. 자바에는 전역 함수가 없고 모든 함수는 어떤 클래스에 종속되어 있다. 이 때문에 기능적인 부분을 작성하는데 자잘한 클래스들을 작성해야 한다는 불편함이 있다. 이런 명사 중심적 생각은 확실히 많은 경우 편리하나 동사 중심으로 생각해야 하는 상황도 생각보다 흔하다는 것이 문제이다. 예를 들어, 퀵 소트를 자바에서 엄격하게 의도된 대로 짜려면 quickSort(array)라는 함수 대신 QuickSorter라는 객체의 생성자에 배열을 넣고, 그 생성자를 참조하는 참조변수를 이용해 run()을 호출하여 동작시켜야 한다.[6]

전망[편집]

자바는 문제점도 있지만, 장점이 워낙 많은 언어이다. 자바는 인터넷 시대 가장 주목을 받았던 언어이다. 현재도 웬만한 기업의 서버 측 애플리케이션은 대부분 자바를 기반으로 하고 있다고 봐도 무방하다. 그리고 최근 블로그와 소규모 사업자의 사이트가 늘어나는 등 인터넷 웹사이트 수가 급증하고 있어 인터넷을 이용한 다양한 응용프로그램과 콘텐츠의 개발 필요성이 커지고 있다. 그리고 4차 산업혁명이라는 기술로 IOT, 빅데이터, 등의 기술이 많이 뜨고 있다. 여기서 이 모든 기술에 가장 기본이 되는 언어가 자바이다. 이에 따라서 자바의 필요성은 더욱 커지고 자바를 이용한 일자리에 대한 전망은 증가할 것으로 보인다.[7] 한편으로는 "자바는 죽었다"거나 "자바는 죽어가고 있다"는 이야기도 종종 들린다. 실제로 요즘은 자바보다 파이썬(python)과 같은 언어를 주제로 세미나를 열면 인기가 더 많다.[8]

각주[편집]

  1. 자바(JAVA), 〈자바(JAVA) 개요〉, 《스터디메이크》 , 2015-07-05
  2. Java, 〈자바소개〉 , 《데브쿠마》 , 2018-10-26
  3. 이현승, 〈구글과 오라클 간 자바 API의 분쟁 역사 - (1)〉, 《소프트웨어정책연구소》 , 2018-04-30
  4. 노영현, 〈자바프로그래밍 언어란? 활용분야/자격증/학습단계〉, 《IT전문학원 KG아이티뱅크 블로그》 , 2017.01.20
  5. (NEM)은 (XEM) 또는 뉴 이코노미 무브먼트(New Economy Movement)로 불리는 암호화폐이다.
  6. Java단점〉,《나무위키》 , 2019-06-22
  7. 양정인력개발센터, 〈웹프로그래머 전망, 취뽀하는 방법!(JAVA/PHP/자바스크립트/프로그래밍/코딩)〉, 《양정인력개발센터 공식블로그》 , 2018-08-21
  8. 심재석, 〈“자바가 죽었다구요? 천만의 말씀!”〉, 《바이라인 네트워크》 , 2017-08-31

참고 자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 자바 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.