"자바"의 두 판 사이의 차이
잔글 (→같이 보기) |
|||
(사용자 3명의 중간 판 10개는 보이지 않습니다) | |||
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)이다. |
− | 자바라는 이름은 인도네시아 자바섬에서 생산한 | ||
− | |||
− | [[ | ||
− | |||
− | |||
== 개요 == | == 개요 == | ||
16번째 줄: | 12번째 줄: | ||
== 특징 == | == 특징 == | ||
− | |||
* '''객체 지향 프로그래밍 언어''' : 자바는 [[객체]]를 중심으로 [[메소드]]가 [[데이터]]에 접근해서 객체의 속성을 조작하는 형태의 [[객체 지향 프로그래밍 언어]]이다. | * '''객체 지향 프로그래밍 언어''' : 자바는 [[객체]]를 중심으로 [[메소드]]가 [[데이터]]에 접근해서 객체의 속성을 조작하는 형태의 [[객체 지향 프로그래밍 언어]]이다. | ||
− | |||
* '''독립성''' : 자바는 [[자바 가상머신]](JVM, Java Virtual Machine)이 [[바이트코드]]인 클래스 파일(.class)을 생성하고, 이 파일의 바이트 코드를 읽은 뒤 [[기계어]]로 바꾸어 실행한다. 따라서 각 [[플랫폼]]에 맞는 자바 가상머신만 설치되어 있으면 어디서든 사용할 수 있기 때문에, 자바는 플랫폼에 독립적인 언어이다. | * '''독립성''' : 자바는 [[자바 가상머신]](JVM, Java Virtual Machine)이 [[바이트코드]]인 클래스 파일(.class)을 생성하고, 이 파일의 바이트 코드를 읽은 뒤 [[기계어]]로 바꾸어 실행한다. 따라서 각 [[플랫폼]]에 맞는 자바 가상머신만 설치되어 있으면 어디서든 사용할 수 있기 때문에, 자바는 플랫폼에 독립적인 언어이다. | ||
− | |||
* '''가독성''' : 자바는 사람들이 쉽게 이해할 수 있도록 만들어진 [[고급언어]]로서, 다른 언어에 비해 코드가 간단하고 가독성이 뛰어나 컴퓨터 전공자가 아니어도 쉽게 이해하고, 프로그래밍을 할 수 있다. | * '''가독성''' : 자바는 사람들이 쉽게 이해할 수 있도록 만들어진 [[고급언어]]로서, 다른 언어에 비해 코드가 간단하고 가독성이 뛰어나 컴퓨터 전공자가 아니어도 쉽게 이해하고, 프로그래밍을 할 수 있다. | ||
− | + | * '''안정성''' : 자바는 배우기 쉽고 대중적인 언어라서 참고자료나 [[오픈 소스]]가 많고, 대형 프로젝트들, 금융권에서도 많이 실행되어 왔기 때문에 안정성이 입증되었다. | |
− | * '''안정성''' : 자바는 배우기 쉽고 대중적인 언어라서 참고자료나 [[오픈 소스]]가 많고, 대형 | + | * '''보안성''' : 자바는 네트워크 분산 처리 환경에서 사용하기 위해 고안된 언어이기 때문에, 자바의 보안 시스템은 각종 설정을 통해 [[네트워크]] 및 파일 접근을 통제한다. |
− | |||
− | * '''보안성''' : 자바는 네트워크 분산 처리 환경에서 사용하기 위해 고안된 언어이기 때문에, 자바의 보안 시스템은 각종 설정을 통해 [[네트워크]] 및 파일 접근을 통제한다. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== 활용 == | == 활용 == | ||
자바 프로그래밍 언어는 호환성이 매우 뛰어나다. 때문에 프로그램이 이후 다른 운영체제나 환경에서 작업을 하기 위해서는 변환을 거쳐야 하는 다른 프로그래밍 언어들과 다르게 변환 없이도 호환이 가능하다. 또한 자바는 보안성이 매우 뛰어나다. 자바라는 프로그램 자체가 보안성이 뛰어나기도 하며 다른 프로그래밍 언어들과 비교해도 보안성이 앞서 있다. 이런 자바 프로그램 언어를 활용하는 분야는 웹 개발, 웹 애플리케이션, [[데이터베이스]], [[빅데이터]], 시스템 네트워크, 서버 네트워크 등으로, 다양한 분야에서 활용이 가능하다.<ref>노영현, 〈[https://kgit.tistory.com/82 자바프로그래밍 언어란? 활용분야/자격증/학습단계]〉, 《IT전문학원 KG아이티뱅크 블로그》 , 2017.01.20</ref> | 자바 프로그래밍 언어는 호환성이 매우 뛰어나다. 때문에 프로그램이 이후 다른 운영체제나 환경에서 작업을 하기 위해서는 변환을 거쳐야 하는 다른 프로그래밍 언어들과 다르게 변환 없이도 호환이 가능하다. 또한 자바는 보안성이 매우 뛰어나다. 자바라는 프로그램 자체가 보안성이 뛰어나기도 하며 다른 프로그래밍 언어들과 비교해도 보안성이 앞서 있다. 이런 자바 프로그램 언어를 활용하는 분야는 웹 개발, 웹 애플리케이션, [[데이터베이스]], [[빅데이터]], 시스템 네트워크, 서버 네트워크 등으로, 다양한 분야에서 활용이 가능하다.<ref>노영현, 〈[https://kgit.tistory.com/82 자바프로그래밍 언어란? 활용분야/자격증/학습단계]〉, 《IT전문학원 KG아이티뱅크 블로그》 , 2017.01.20</ref> | ||
+ | |||
+ | 사용자별로 맞춤형 [[블록체인]]을 제작할 수 있는 스마트 자산 시스템을 위한 [[암호화폐]]인 [[넴]](NEM)<ref>'''[[넴]]'''(NEM)은 [[젬]](XEM) 또는 [[뉴 이코노미 무브먼트]](New Economy Movement)로 불리는 [[암호화폐]]이다.</ref>은 자바(Java) 언어로 개발되었다. | ||
== 문제점 == | == 문제점 == | ||
51번째 줄: | 28번째 줄: | ||
* '''JVM 로딩 속도 문제''' | * '''JVM 로딩 속도 문제''' | ||
− | : 자바의 심각한 단점 중 하나는, 실행하는 과정에서 자바 가상머신이 반드시 완벽하게 로딩되어야 하므로 프로그램의 초기 시작 시간이 완전한 이진 코드로 컴파일된 프로그램을 실행하는 것에 비해 오래 걸린다는 것이다. 아무것도 안 하고 콘솔 화면에 기본적인 문장을 찍기만 하는 프로그램이 실행되는 데에도 스레드(thread)가 많이 뜨는 것을 볼 수 있다 | + | : 자바의 심각한 단점 중 하나는, 실행하는 과정에서 자바 가상머신이 반드시 완벽하게 로딩되어야 하므로 프로그램의 초기 시작 시간이 완전한 이진 코드로 컴파일된 프로그램을 실행하는 것에 비해 오래 걸린다는 것이다. 아무것도 안 하고 콘솔 화면에 기본적인 문장을 찍기만 하는 프로그램이 실행되는 데에도 스레드(thread)가 많이 뜨는 것을 볼 수 있다. |
* '''가비지 컬렉션(Garbage Collection)에 의한 실행 지연 문제''' | * '''가비지 컬렉션(Garbage Collection)에 의한 실행 지연 문제''' | ||
− | : 가비지 컬렉션(Garbage Collection)에 의한 메모리 프리징 현상이 초반부터 지속적 해서 자바의 문제점이었다. 멀쩡하게 동작해야 할 프로그램이 끊기는 현상이 발생하는 것이다. 오늘날 자바의 문제는 바이트 코드 변환으로 인한 속도 저하보다 이 가비지 컬렉션의 영향이 더 크다고 볼 수 있다. 이러한 문제점은 가비지 컬렉션을 지원하는 다른 프로그래밍 언어들도 마찬가지이긴 하다. 하지만 자바 초기부터 실행속도와 함께 꾸준히 문제점으로 지적받아 왔고, 다행이도 버전이 올라갈수록 다양하게 개선되는 모습을 보이고 있다. | + | : 가비지 컬렉션(Garbage Collection)에 의한 메모리 프리징 현상이 초반부터 지속적 해서 자바의 문제점이었다. 멀쩡하게 동작해야 할 프로그램이 끊기는 현상이 발생하는 것이다. 오늘날 자바의 문제는 바이트 코드 변환으로 인한 속도 저하보다 이 가비지 컬렉션의 영향이 더 크다고 볼 수 있다. 이러한 문제점은 가비지 컬렉션을 지원하는 다른 프로그래밍 언어들도 마찬가지이긴 하다. 하지만 자바 초기부터 실행속도와 함께 꾸준히 문제점으로 지적받아 왔고, 다행이도 버전이 올라갈수록 다양하게 개선되는 모습을 보이고 있다. 자바 17버전의 zgc 는 GC 작업시 멈추는 기간이 1ms 이하라서 멈추는걸 못느낀다고 봐도 무방하다. |
− | * '''소스 코드 길이''' | + | * '''장황한 소스 코드 길이''' |
− | : 자바는 소스코드의 길이가 다른 언어에 비해 상당히 긴 편이다. 같은 기능을 하는 코드를 짠다고 했을 때 다른 언어에 비해 입력해야 할 양이 많다. 기본적인 구조를 짜기 위해서 무조건 의무적으로 작성해 주어야만 하는 | + | : 자바는 소스코드의 길이가 다른 언어에 비해 상당히 긴 편이다. 같은 기능을 하는 코드를 짠다고 했을 때 다른 언어에 비해 입력해야 할 양이 많다. 기본적인 구조를 짜기 위해서 무조건 의무적으로 작성해 주어야만 하는 서식(보일러 플레이트)이랑 코드의 분량이 많다. |
* '''언어적 불편함''' | * '''언어적 불편함''' | ||
79번째 줄: | 56번째 줄: | ||
== 같이 보기 == | == 같이 보기 == | ||
+ | * [[제임스 고슬링]] | ||
* [[프로그래밍 언어]] | * [[프로그래밍 언어]] | ||
* [[JSP]] | * [[JSP]] | ||
* [[자바스크립트]] | * [[자바스크립트]] | ||
* [[넴]] | * [[넴]] | ||
+ | * [[자와섬|자와섬(자바섬)]] | ||
{{프로그래밍 언어|검토 필요}} | {{프로그래밍 언어|검토 필요}} |
2024년 6월 30일 (일) 11:45 기준 최신판
자바(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]
각주[편집]
- ↑ 자바(JAVA), 〈자바(JAVA) 개요〉, 《스터디메이크》 , 2015-07-05
- ↑ Java, 〈자바소개〉 , 《데브쿠마》 , 2018-10-26
- ↑ 이현승, 〈구글과 오라클 간 자바 API의 분쟁 역사 - (1)〉, 《소프트웨어정책연구소》 , 2018-04-30
- ↑ 노영현, 〈자바프로그래밍 언어란? 활용분야/자격증/학습단계〉, 《IT전문학원 KG아이티뱅크 블로그》 , 2017.01.20
- ↑ 넴(NEM)은 젬(XEM) 또는 뉴 이코노미 무브먼트(New Economy Movement)로 불리는 암호화폐이다.
- ↑ 〈Java단점〉,《나무위키》 , 2019-06-22
- ↑ 양정인력개발센터, 〈웹프로그래머 전망, 취뽀하는 방법!(JAVA/PHP/자바스크립트/프로그래밍/코딩)〉, 《양정인력개발센터 공식블로그》 , 2018-08-21
- ↑ 심재석, 〈“자바가 죽었다구요? 천만의 말씀!”〉, 《바이라인 네트워크》 , 2017-08-31
참고 자료[편집]
- 자바(JAVA), 〈자바(JAVA) 개요〉, 《스터디메이크》, 2015-07-05
- Java, 〈자바소개〉, 《데브쿠마》, 2018-10-26
- 이현승, 〈구글과 오라클 간 자바 API의 분쟁 역사 - (1)〉, 《소프트웨어정책연구소》, 2018-04-30
- KENDRICK, 〈프로그래밍 언어들의 간단한 특징〉, 《개인블로그》, 2017-08-25
- 노영현, 〈자바프로그래밍 언어란? 활용분야/자격증/학습단계〉, 《IT전문학원 KG아이티뱅크 블로그》, 2017.01.20
- 나무위키, 〈Java단점〉, 《나무위키》, 2019-06-22
- 양정인력개발센터, 〈웹프로그래머 전망, 취뽀하는 방법!(JAVA/PHP/자바스크립트/프로그래밍/코딩)〉, 《양정인력개발센터 공식블로그》, 2018-08-21
- 심재석, 〈“자바가 죽었다구요? 천만의 말씀!”〉, 《바이라인 네트워크》, 2017-08-31
- 에이콘아카데미, 〈자바의 전망〉, 《에이콘 아카데미》, 2019-04-
같이 보기[편집]