문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 Java/기타 (문단 편집) == 여담 == * Java의 창시자인 [[제임스 고슬링]] 옹은 진성 [[앱등이]]다.[* Java가 [[안드로이드(운영체제)|안드로이드]]의 기반이 되는 언어라는 점을 생각하면 아이러니...] 집에서 쓰는 IT 기기에 대해 묻는 질문에 폰, 태블릿, 데스크탑, 랩탑 등 거의 모든 IT 기기를 애플사 제품으로 도배해놨음이 밝혀졌다. 가족들도 마찬가지. 정작 [[Apple|애플]]은 OS X 레오파드 업데이트 때 Java를 찬밥 취급했지만...[* 사실 애플은 독자적인 JDK를 제공하는지라 Java 개발자들을 매우 피곤하게 하는 회사이기도 하다.] * 제임스 고슬링과 Java를 창시할 때 같이 일했던 패트릭 노튼은 1999년 [[FBI]]의 [[아동포르노]] 함정수사로 인해 체포되었다.[* 단지 징역을 살지는 않고 FBI에서 1년 근무하는 것으로 퉁쳤다.] 덤으로 IT 관계자들은 노튼이 [[포르노|기업 방화벽을 통과할 수 있는 통신도구를 만드는 일에 관심을 보인 이유]]를 일찌감치 짐작했었다고... * 헷갈리기 쉬운 것들 *'''[[JavaScript|자바스크립트(JavaScript)]]''' JavaScript는 Java와는 '''아무''' 상관도 없다. 넷스케이프사에서 Mocha, LiveScript로 개발하던 스크립트 언어를 1996년 전후 열풍이던 Java의 유명세에 묻어가기위해 Sun에서 상표권을 라이선스해 JavaScript라고 이름붙였을 뿐이다. 이름 하나 생각없이 잘못 붙여서 여러 사람을 지금도 헷갈리게 만드는 대표적인 케이스. 이름을 제외한 연관성은 희박한 편이여서 공통점이 아닌 차이점을 나열하는게 훨씬 빠를 정도다. 같은 C-족 언어이긴 하지만 문법조차 별로 비슷하지도 않으며[* 기초적인 C-문법의 일부인 if문, while문 등을 제외하면 공통점이 많지 않다.], 사용되는 라이브러리나 개념 또한 많이 다르다. 기초 패러다임상 당연한 요소들을 제외하고 나면 둘의 유사점은 오직 객체지향 뿐인데 그 마저도 JavaScript는 프로토타입 베이스라 클래스를 쓰는 Java와 많이 다르다 [*ES6 ECMAScript 6에서 Class가 생겼다! 그래도 여전히 Java의 클래스와는 겉보기에만 비슷할 뿐 열어보면 다르다. ES6에서 나온 클래스는 기존에 있던 prototype 객체지향 프로그래밍을 조금 더 쉽게 하게 해주는 문법적 설탕이다.]. 또한 Java는 정적 타입 언어인데 반해 JavaScript는 동적 타입 언어다. [[웹 서버]]용 파생 규격 역시 [[JSP]]와 [[Node.js]]로 다르다. 떠도는 말로 'Java와 [[JavaScript]]의 차이는 [[인도]]와 [[인도네시아]]의 차이와 같다'라고도 한다. 왜냐하면 [[인도]]와 [[인도네시아]]가 이름만 비슷하고 서로 다른 국가이듯이[* 다만 인도네시아의 어원은 인도와 관련이 '''있다'''. 인도네시아라는 이름은 '[[인도양]]의 섬'들이라는 [[그리스어]]·[[라틴어]]식 표현이기 때문. 이런 인도네시아와 인도의 관계는, JavaScript가 Java와 별 관련은 없어도 그 이름을 빌려 왔다는 점에서 왠지 흡사하다.] Java와 [[JavaScript]]도 다른 프로그래밍 언어이기 때문이다. 굳이 유일한 공통점을 뽑자면, '''Java 와 JavaScript 라는 단어는 모두 [[오라클(기업)|오라클]]의 등록 상표이다.''' 이 뿐이다. Java 언어 스펙은 오라클이 지금도 간섭할 수 있지만, JavaScript 오라클이 간섭하지 않기로 했다. 즉, 단어 사용의 권리 말고는 공통점이 하나도 없는 언어라 보면 된다. *'''Visual J++/Visual J#''' Visual J++은 [[마이크로소프트]]에서 Java를 변형하여 윈도우 전용으로 만든 언어. 위의 JavaScript는 이름이 다른거지만 이건 Java 자체를 윈도우에 맞도록 변형한 것이다. 이 때문에 Java 가상머신 없이 윈도우에서 네이티브로 돌아가지만, 다른 플랫폼에서는 전혀 돌아가지 않는다. 거기다 썬 마이크로시스템즈의 허락없이 마구 변형해서 썼기 때문에 소송크리를 먹고 개발이 중단되었다. 이후 윈도우의 프로그램이 [[Microsoft .NET#Framework|닷넷]]으로 넘어가면서 닷넷 기반의 Visual J#도 만들었다. Visual Studio 2005에 포함되었지만 이것도 개발이 중단되었다. 이때는 썬이 소송하지도 않았는데 중단된 것을 보면 시장성이 없었던 듯 하다. 이미 이 때는 C#이 어느 정도 자리를 잡았기 때문일 수도 있다. * 조엘온 블로그로 유명한 조엘이 엄청나게 싫어하는 언어. 조엘 스폴스키가 Java를 싫어하는 이유로는 성능상의 문제나 저수준을 다루지 않기때문이다. ...)[* https://www.reddit.com/r/learnprogramming/comments/3uhdtr/i_just_read_joel_spolskys_the_perils_of_java/ ][* 이 부분은 대학의 '''교육용''' 언어로서의 이야기다. 산업용으로서는 같은 기능을 개발하기 위한 언어는 쉬우면 쉬울수록 좋은 것이 당연하다. 물론 성능과 생산성 사이에서 적절한 균형을 잡아야 하겠지만.]는 이유도 있지만, Java 자체가 "위원회 기술"이라는 이유도 큰 몫을 차지한다.[* Java 상임 위원회에는 [[인텔]], [[오라클(기업)|오라클]], [[JetBrains]], [[레드햇]], [[ARM Holdings]] 등이 속해 있다. 모두 각자의 분야에서 내로라하는 기업들이다.] 사실 이는 Java가 가진 태생적 문제인데 Java라는 언어가 [[C\#|C#]]처럼 어느 특정 단체나 회사가 주도적으로 끌고가는 물건이 아니다 보니 위원회를 구성하는 각 기업들의 파워게임에 따라 중요한 문제의 해결방안이 빨리 처리되지 않는 경우도 있고 배가 산으로 가는 경우도 있다. * Java를 설치하고 환경변수를 설정할 때 CLASSPATH의 디렉토리를 보통 %JAVA_HOME%\\lib로 설정하는데, 이렇게 하면 파일 실행 시 JVM이 무조건 \\lib 경로에서 클래스 파일을 찾기 때문에 해당 파일을 찾거나 로드할 수 없다는 오류 메시지를 뿜게 된다. 매번 실행할 때마다 -classpath . 옵션을 주거나 CLASSPATH 환경변수의 디렉토리 끝에 ;.을 붙이면 해결할 수 있다.[* '.'은 Java 클래스 파일이 위치한 해당 디렉토리를 의미한다.] 물론 대부분의 IDE는 클래스 패스 설정을 자동으로 처리해 주지만, 역으로 그렇기에 클래스 패스에 대한 이해를 제대로 하지 않고 넘어가 버리는 경우가 많다. * Java 클래스 바이트코드 매직넘버가 {{{0xCA 0xFE 0xBA 0xBE}}}다. 이것을 붙이면 CAFEBABE다. CAFEBABE인 이유는, 제임스 고슬링과 다른 연구원들이 St. Michael's Alley라는 곳에 [[점심]]을 먹으러 가곤 했다고 한다. 그 지방 전설에 의하면 그곳에서 [[더 그레이트풀 데드]]라는 [[밴드]]가 크게 성장하기 전에 연주하던 곳이라고 했다. 그리고 제임스 고슬링과 연구원들은 그곳을 Cafe Dead라고 불렀다. 그러다 CAFE DEAD가 헥스 넘버인 것을 알아냈다고 한다.[* CAFEDEAD를 0xCA 0xFE 0xDE 0xAD로 바꿨을 때의 얘기인 듯하다.] 그 때 마침 그는 파일 포맷 소스와 매직넘버를 개편하고 있었다.[* 그때 필요한 매직넘버는 2개였다. 하나는 오브젝트 파일이고, 또 다른 하나는 클래스 파일 매직넘버였다.] 결국 Object 파일의 매직 넘버는 CAFEDEAD가 되었다. 나머지 하나, 클래스 파일의 매직넘버는 CAFE 다음에 맞을 만한 번호를 정하는 것인데, 그 때 적은 것이 BABE다. * 2012년 말에는 Java에 보안 취약점이 발견되어 오라클에서 긴급 보안 패치를 발표했지만 또 다른 취약점이 발견돼버리는 바람에 Java를 계속 써야 하나 말아야 하는 논쟁이 벌어지기도 했다. 지금은 잠잠해진 상태. * 기존의 32bit용은 64bit 웹 브라우저에 사용할 수 없기에 64bit용 Java가 공개되어 있다. 그러나 32bit 웹 브라우저와 64bit 웹 브라우저를 각각 돌아가며 사용해야 할 필요가 있을 경우 둘 다 설치해야 제대로 돌아가기 때문에 번거로운 편이다. * 2018년 초부터 자바 설치파일로 위장한 [[랜섬웨어]]가 기승을 부리고 있다. 어느날 갑자기 직접 설치파일을 다운받거나 하지도 않았는데 설치파일이 저절로 실행되며, 대부분의 감염자들은 이를 자동 업데이트로 인지하고 그대로 업데이트 해버려서 감염된다고 한다. 심지어 사용하는 운영체제의 언어를 인지하여 해당 언어의 자바 설치파일에 있는 문장과 이미지까지 철저하게 재현되어서 의심할 여지가 없다고 한다. * [[마인크래프트]]는 원래 Java로 개발되었는데, 속도 문제 때문인지 [[마인크래프트/베드락 에디션|게임을 통째로 C++로 다시 짰다.]] 그리고 실제로 속도가 10배 가까이 빨라졌다. --물론 [[마르쿠스 페르손]]의 발코딩 실력도 어느정도는 영향을 끼치긴 했다.-- 다만 기존의 Java 에디션으로 개발된 애드온들이 워낙 많고, 그것들이 베드락 에디션과 호환이 안 돼서 [[경로의존성|여전히 Java 에디션을 사용하는 유저들이 많다]]. 실제로 Java는 게임 쪽에서는 거의 쓰이지 않는다.[* 보통 C++가 많이 쓰이고, 유니티 엔진의 영향으로 C#도 많이 쓰는 편이다. 웹게임에서 Java를 쓴적이 있지만 서버 사이드에서나 쓰는 정도였고, 클라이언트 사이드는 플래시가 대세였다. 플래시가 몰락한 후에는 HTML5로 물갈이 당했고, 웹게임 자체가 쇠퇴기에 들어서서 잘 쓰이지 않는다.] * [[미국]]의 고등학교 교육과정 겸 시험 및 대학 교양 과목 선이수제인 [[Advanced Placement]] 중 [[AP 컴퓨터과학 A]] 과목이 Java를 사용한다. * 온라인 상으로 코드를 실행시켜 보고 싶다면 [[https://repl.it/languages/java|여기]]로. * 자바를 컴퓨터에 깔 때 설치 프로그램에서 '30억개 기기에서 Java 사용'이라는 문구가 나온 적이 있다. [각주][include(틀:문서 가져옴,title=Java, version=1228, paragraph=2, title2=Java, version2=1232)]저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기