의견.png

자바

해시넷
kimminsung5 (토론 | 기여)님의 2019년 6월 24일 (월) 17:48 판
이동: 둘러보기, 검색
자바(Java) 로고
자바(Java) 로고와 글자

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

(NEM)

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

역사

자바 언어는 1991년 6월 셋톱 프로젝트를 위해 제임스 고슬링(James Gosling)이 만들었다. 이 언어는 원래 제임스 고슬링의 사무실 밖에 있던 오크 나무를 따다 오크(Oak), 혹은 그린(Green) 이라고도 불렀으나, 단어 리스트 중 무작위로 뽑은 자바(Java)를 선택했다. 고슬링의 목표는 C/C++ 스타일의 언어와 가상머신을 구현하는 것이었다. 첫 공개 자바 버전은 1995년 자바 1.0이었다. 한 번 쓰고 어느 곳에도 실행하는 것을 약속하였고 인기 플랫폼에 무료 런타임을 제공하였다. 이 플랫폼은 꽤 안정성을 지녔고 보안 시스템은 여러 설정을 통해 네트워크 및 파일 접근을 통제할 수 있었다. 대부분의 브라우저는 곧 자바 애플릿((Java Applet)을 웹 페이지 안에서 실행할 수 있었고 자바의 인기는 급상승했다. 자바 2(JDK 1.2 ~ 1.4)의 출현으로 여러 다양한 플랫폼에서 사용할 수 있는 설정들을 만들었다.

썬 마이크로시스템즈는 1997년 ISO/IEC JTC1 표준화 그룹, 그리고 나중에는 ECMA International 그룹과 접촉하여 정식 승인을 받으려 했으나 곧 이 프로세스에서 철수했다. 자바는 사실상의 표준이며 자바 커뮤니티 프로세스(Java Community process)를 통해 관리되고 있다. 썬 마이크로시스템즈는 자바의 대부분을 무료로 배포하였으나 오픈이 아닌 사유 소프트웨어였다. 썬 마이크로시스템즈는 자바 엔터프라이즈 시스템 같은 특정 라이선스를 팔아서 수입을 올렸다. 썬(SUN) 사는 자사의 개발용(소프트웨어 개발 키트 (SDK))과 개발용의 일부인 실행용(자바 런타임 환경, JRE)을 구분한다. 실행용에는 컴파일러,유틸리티 및 여러 개발용 헤더 파일이 포함되어 있지 않다.

2006년 11월 13일 썬 마이크로 시스템즈는 대부분은 자바를 GPL 라이선스로 소스를 오픈하였으며 2007년 5월 8일 이 과정을 마쳤다. 썬 마이크로시스템즈가 권한을 가지고 있지 않은 대부분의 코어 부분을 오픈하였다. 2009년 4월 20일 제작자인 썬 마이크로시스템즈오라클과 인수 합병됨에 따라 자바에 대한 권리 및 유지보수 또한 오라클로 넘어가게 되었다. [2]

특징

객체 지향 프로그래밍 언어

자바는 객체를 중심으로 메소드가 데이터에 접근해서 객체의 속성을 조작하는 형태의 객체 지향 프로그래밍 언어이다.

플랫폼에 독립적

자바는 자바가상머신(JVM, Java Virtual Machine)이 바이트코드클래스 파일(.class)을 생성하고, 이 파일의 바이트코드를 읽은 뒤 기계어로 바꾸어 실행한다. 따라서 각 플랫폼에 맞는 JVM만 설치되어 있으면 어디서든 사용할 수 있기 때문에, 자바는 플랫폼에 독립적인 언어이다.

가독성

자바는 사람들이 읽고 쉽게 이해할 수 있도록 만들어진 고급언어로서, 다른 언어에 비해 코드가 간단하고 가독성이 뛰어나 컴퓨터 전공자가 아니어도 쉽게 이해하고, 프로그래밍을 할 수 있다.

안정성

자바는 배우기 쉽고 대중적인 언어라서 참고자료나 오픈 소스가 많고, 대형 프로젝트들도 많이 실행되어 왔기 때문에 안정성이 입증되었다.

보안성

자바는 네트워크 분산 처리 환경에서 사용하기 위해 고안된 언어이기 때문에, 자바의 보안 시스템은 각종 설정을 통해 네트워크 및 파일 접근을 통제한다. 따라서 바이러스가 침투하지 못하는 구조를 가졌고 메모리 내에서 데이터 접근을 제한한다.

JAVA 이외의 프로그래밍 언어

  • C

C는 범용언어이다. 성능이 아주 중요한 애플리케이션에서 사용된다. 최근 인기가 많은 언어는 최소한 C의 문법적인 부분이라도 물려받고 있으며, C의 문법은 이해하는 데 어려움은 없으나 처음이라면 어려울 수 있다.

  • C++

C++C와 비슷하지만, 객체지향 지원 및 몇 가지 발전된 기능을 가지고 있다. 구글,크롬,파이어폭스,마소 워드,엑셀,파워포인트 등이 모두 C++로 개발된 것이다.

  • python

python은 쉽게 배우고 개발할 수 있게 만들어진 언어이다. 컴퓨터 공학과 기초수업에 많이 사용된다. 우분투애플리케이션과 인스타그램의 웹서버가 python으로 개발되었다고 한다.

  • PHP

PHP는 웹 서버에서 주로 사용된다. 배우는 게 쉽고 데이터베이스에 쉽게 접근할 수 있도록 해주기 때문에 많은 인기를 얻었다.[3]

JAVA의 활용 분야

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

문제점/대안

문제점

  • 속도 문제

Java는 C/C++, Pascal, Fortran 언어와 비교했을 때보다 속도가 느리다. Java는 C/C++과 비교했을 때 느린 속도이지만, 다른 고수준 언어들보다는 그리 떨어지지 않는다.

  • JVM 로딩 속도 문제

Java의 심각한 단점 중 하나는, 실행하는 과정에서 Java Virtual Machine이 반드시 완벽하게 로딩되어야 하므로 프로그램의 초기 시작 시각이 완전한 이진 코드로 컴파일된 프로그램을 실행하는 것에 비해 오래 걸리는 것이다. 아무것도 안 하고 콘솔 화면에 기본적인 문장을 찍기만 하는 프로그램이 실행되는 데에도 thread가 많이 뜨는 것을 볼 수 있다. 특히 프로그램에서 불필요한 기능을 끌어들이는 것은 매우 심각한 문제이다.

  • 가비지 컬렉션(Garbage Collection)에 의한 실행 지연 문제

가비지 컬렉션(Garbage Collection)에 의한 메모리 프리징 현상이 초반부터 지속적해서 Java의 문제점이었다. 멀쩡하게 동작해야 할 프로그램이 끊기는 현상이 발생하는 것이다. 오늘날 Java의 문제는 바이트 코드 변환으로 인한 속도 저하보다 이 가비지 컬렉션의 영향이 더 크다고 볼 수 있다. 이러한 문제점은 가비지 컬렉션을 지원하는 다른 프로그래밍 언어들도 마찬가지이긴 하지만 실행속도와 함께 Java 초기부터 꾸준히 문제로 꼽혀왔지만, 버전이 올라갈수록 다양하게 개선되어 왔다.

  • 소스 코드 길이

Java는 소스코드의 길이가 다른 언어에 비해 상당히 긴 편이다. 같은 기능을 하는 코드를 짠다고 했을 때 다른 언어에 비해 입력해야 할 양이 많다. 기본적인 구조를 짜기 위해서 무조건 의무적으로 작성해 주어야만 하는 서식과 코드의 분량이 많다.

  • 언어적 불편함

Java는 모든 동작이 객체 상위에서 이루어지게 함으로써 명사형으로 생각하는 것을 강제한다. Java에는 전역 함수가 없고 모든 함수는 어떤 클래스에 종속되어 있다. 이 때문에 기능적인 부분을 작성하는데 자잘한 클래스들을 작성해야 한다는 불편함이 있다. 이런 명사 중심적 생각은 확실히 많은 경우 편리하나 동사 중심으로 생각해야 하는 상황도 생각보다 흔하다는 것이 문제이다. 예를 들어, 퀵 소트를 Java에서 엄격하게 의도된 대로 짜려면 quickSort(array)라는 함수 대신 QuickSorter라는 객체의 생성자에 배열을 넣고, 그 생성자를 참조하는 참조변수를 이용해 run()을 호출하여 동작시켜야 한다. [5]


각주

  1. (NEM)은 (XEM) 또는 뉴 이코노미 무브먼트(New Economy Movement)로 불리는 암호화폐이다.
  2. "[1]", wiki, 2019-05-10
  3. "[2]", sonim, 2017.08.25
  4. [3]〉 《나무위키》 2017.01.20
  5. [4]〉,《나무위키2》 2019-06-22

같이 보기


  의견.png 이 자바 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.