자바 (프로그래밍 언어): 두 판 사이의 차이
내용 삭제됨 내용 추가됨
잔글 봇: 틀 이름 및 스타일 정리 |
잔글편집 요약 없음 |
||
19번째 줄:
'''자바'''({{llang|en|Java}}, {{문화어|쟈바}})는 [[썬 마이크로시스템즈]]의 [[제임스 고슬링]]({{lang|en|James Gosling}})과 다른 연구원들이 개발한 [[객체 지향 프로그래밍|객체 지향적]] [[프로그래밍 언어]]이다. [[1991년]] 그린 프로젝트({{lang|en|Green Project}})라는 이름으로 시작해 [[1995년]]에 발표했다. 처음에는 가전제품 내에 탑재해 동작하는 프로그램을 위해 개발했지만 현재 [[웹 애플리케이션]] 개발에 가장 많이 사용하는 언어 가운데 하나이고, 모바일 기기용 소프트웨어 개발에도 널리 사용하고 있다. 현재 버전 9까지 출시했다.
자바의 개발자들은 [[유닉스]] 기반의 배경을 가지고 있었기 때문에 문법적인 특성은 [[파스칼 (프로그래밍 언어)|파스칼]]이 아닌 C++의 조상인 [[C (프로그래밍 언어)|C 언어]]와 비슷하다.<ref> Core Java 2 vol 1. page:10</ref> 자바를 다른 컴파일언어와
== 역사 ==
자바 언어는 1991년 6월 셋톱 프로젝트를 위해 [[제임스 고슬링]](James Gosling)이 만들었다. 이 언어는 원래 제임스 고슬링의 사무실 밖에 있던 오크 나무를 따다 오크(Oak), 혹은 그린(Green) 이라고도 불렀으나, 단어 리스트 중 무작위로 뽑은 자바(Java)를 선택했다. 고슬링의 목표는 C/C++ 스타일의 언어와 가상 머신을 구현하는 것이었다. 첫 공개 자바 버전은 1995년의 자바 1.
[[썬 마이크로시스템즈]]는 1997년 ISO/IEC JTC1 표준화 그룹, 그리고 나중에는 ECMA International 그룹과 접촉하여 정식 승인을 받으려 했으나 곧 이 프로세스에서 철수했다. 자바는 사실상 (de facto)의 표준이며 [[자바 커뮤니티 프로세스]](Java Community Process)를 통해 관리되고 있다. [[썬 마이크로시스템즈]]는 자바의 대부분을 무료로 배포하였으나 오픈이 아닌 사유 소프트웨어였다. [[썬 마이크로시스템즈]]는 자바 엔터프라이즈
2006년 11월 13일 [[썬 마이크로시스템즈]]는 대부분은 자바를 [[GPL]] 라이선스로 소스를 오픈하였으며 2007년 5월 8일 이 과정을 마쳤다. [[썬 마이크로시스템즈]]가 권한을 가지고 있지 않은 대부분의 코어 부분을 오픈하였다. 2009년 4월 20일 제작사인 [[썬 마이크로시스템즈]]가 [[오라클 (기업)|오라클]]과
[[파일:Duke (Java mascot) waving.svg|thumb|100px|Duke 자바 마스코트]]
== 철학 ==
43번째 줄:
[[파일:Java virtual machine architecture.svg|thumb|400px|JVM 구조. 소스코드는 바이트코드로 컴파일되어 생성, 코드 검증, JVM에 의해 해석되어 실행(interpreted) 또는 JIT-compiled로 직접 기계어 코드로 변환 실행. JRE(Java Runtime Environment)에 API와 JVM이 함께 만들어짐.]]
자바가 여러 개의 [[마이크로프로세서]](CPU)에서 같은 코드가 실행되기 위해서는 C/C++의 프로그램의 실행 구조와는 다른 방식이 필요하다. C/C++가 특정 CPU의 기계어 코드를 직접 생성하면, 이 기계어 코드가 메모리에 적체되어 바로 실행된다. 따라서 C/C++은 CPU가 달라지면 컴파일러가 달라져야 한다. 임베디드 프로그램의 경우, gcc는 gcc 소스를 사용해서 특정 CPU를 지정하고, 컴파일러(x86 플랫폼에서)로 [[크로스 컴파일러]]를 만들 수 있다. x86 리눅스용 프로그램 만든다면, x86 컴파일러를 만들 수 있다. ARM용 프로그램이라면 ARM을 지정하고 컴파일러 소스를 컴파일러(x86에서 실행되는)로 ARM용 크로스 컴파일러를 만들 수 있다. 만약
=== 자바 실행 모델과 [[자바 바이트코드]]의 예 ===
60번째 줄:
}
</source>
이것을 C/C++를 [[x86|x86 프로세서]]용 [[컴파일러]]로 컴파일하면, 컴파일러와 최적화 등에 따라 다를 수 있지만 다음과 같은 예의 코드가 생성될 수 있다. C 언어에서 실행할 때, 지역변수는 [[스택]]이나 CPU의 [[레지스터]]를 이용한다. 스택이냐 레지스터냐는 개발 도구의 옵션에서 설정하는 최적화와 함수 내의 변수의 숫자와 관련이 있다. 함수의
[[x86|x86 프로세서]]에서 [[어셈블리어]] 코드 예는
<source lang="asm">
mov eax, DWORD PTR 4[ebp]
70번째 줄:
</source>
이 코드는 2개의 정수형 숫자를 더해 다른 곳에 넣는 과정이다. 메모리에 적체된 코드를 x86이 읽어 실행시킬 수 있는 기계어로 일대일 대응된다. ''bp'' 레지스터는 CPU의 스택을 베이스로 한 포인터
그러나 자바에서 보면
0 iload_1
86번째 줄:
자바의 버전은 보통 Java SE 또는 JDK/JRE의 버전으로 말한다.
JDK(Java Development Kit)는 표준 라이브러리를 포함하며, JDK 버전이 바뀜에 따라 이 라이브러리가 확대되고 [[API]]가 바뀐다. 초기 1.0/1.1 버전에서 JDK/JRE의 명칭을 사용하다가 Java 1.2가 발표되면서 J2SDK/J2RE라고 개명하여 사용했으나 기존의 명칭으로 사용하는 사람들이 많아 현재는 다시 JDK/JRE의 명칭으로 돌아왔다. 또한 J2SE(Java2 Standard Edition)라는 명칭 또한 Java SE(Java Standard Edition)
자바 버전 체계의 메이저 버전(
언어 자체는 자바 언어 명세(Java Language Specification, JLS)에서 정의되며, 판({{lang|en|edition}})으로 구분한다. JDK가 확장되는 동안 언어는 2판에서 거의 변화가 없었으나, JDK 5와 함께 바뀐 JLS 3판에서 제네릭({{lang|en|generic}}) 타입, 애너테이션({{lang|en|annotation}}) 같은 기능이 도입되면서 상당히 바뀌었다.
JDK 7에서는 자바 언어에 상당한 변화가 계획되어 있었으나 JDK 7로 예정되었던 변화가 JDK
현재 자바 언어는 JLS 3판, JDK는 버전 9이다.
102번째 줄:
현재 오라클 공식 홈페이지에서 JDK 8, Java.net에서 JDK
== 예제 ==
|