Oracle의 Sun 인수로 인해 사람들은 Java의 미래에 대해 걱정하게 되었습니다. Oracle이 Java의 개방성을 계속 유지할 수 있는지, 그리고 Ruby, Python 또는 PHP와 같은 수많은 경량 언어의 부상에 직면해 있습니다. , Java가 개발 분야에서 계속해서 인기를 유지할 수 있을까요?
14년 전, Sun의 마케팅 천재가 실험적인 크로스 플랫폼 언어의 이름을 견고함을 상징하는 Oak에서 향기가 가득한 Java로 이름을 바꿨을 때, 그는 이 언어가 나중에 인기있는 언어. 실제로 Sun이 이제 컴퓨터 산업에서의 위치를 정확하게 반영하기 위해 이 언어의 이름을 바꾸고 싶다면 Oak가 더 생생한 것 같습니다. 오늘날 Java 언어는 실제로 모든 곳에서 꽃을 피울 수는 없지만 여러 경우와 장치에 등장했으며 안정적인 작동과 잘 설계되었다는 평판을 누리고 있습니다. Java 코드가 모든 컴퓨터나 플랫폼을 지배하지는 못할 수도 있습니다. 보편적인 언어가 되는 것이 눈앞에 있습니다.
Java의 아버지인 James Gosling은 Oracle이 주최한 OpenWorld 컨퍼런스에서 연설하기 위해 무대에 올랐을 때 이 점을 지적했습니다. 그는 8억 5천만 대 이상의 Java 지원 데스크탑과 약 100억 대의 Java 지원 장치에 대한 다양한 통계가 포함된 JavaFX 슬라이드쇼를 꺼냈습니다. 실제로 Java 가상 머신은 전자책 리더인 Kindle, Blu-ray 디스크 플레이어 및 스마트폰(스마트폰 이하 포함) 등 전자 장치에 흔히 사용됩니다. iPhone 앱은 수천 대의 iPhone에서 실행되지만 Java는 20달러에 구입할 수 있는 그다지 스마트하지 않은 휴대폰부터 최신 세대의 BlackBerry 및 Android 휴대폰에 이르기까지 26억 대의 휴대폰에 내장되어 있는 것이 없습니다.
Gosling을 OpenWorld 컨퍼런스에 초대하는 것은 오라클의 수장인 Larry Ellison이 엔지니어들에게 언어에 밝은 미래가 있다는 점을 확신시키려는 방법 중 하나일 뿐입니다. Oracle은 Sun Microsystems를 인수하기를 원하지만 여전히 유럽 규제 기관의 결정을 승인할 때까지 기다려야 합니다. 미국 정부는 승인을 내렸지만, 유럽 정부 관계자들은 MySQL 개발에 대한 우려로 인해 아직 거래에 동의하지 않았습니다. Gosling과 Sun의 McNealy 회장은 인수 합병이 완료되면 Java가 이전보다 Oracle로부터 더 많은 관심과 자원을 받게 될 것이라고 말했습니다.
단기적으로는 Ellison이 전달한 신호가 그다지 중요하지 않을 수 있습니다. 이제 Java가 환경이 되었기 때문에 개발 방향을 바꾸는 것이 쉽지 않기 때문입니다. 물론 일부 사람들은 오라클의 비즈니스 모델이 너무 달라서 필연적으로 Java 생태계의 모든 부분에 큰 변화를 가져올 것이라고 믿고 있습니다. 전반적으로 Java가 변경될 수 있는 모든 이유와 마찬가지로 Oracle이 현 상태를 유지하려는 타당한 이유가 있습니다.
엔터프라이즈급 애플리케이션이 주요 전쟁터입니다.
Java는 처음에 서버 측에서 그 자리를 찾았으며 이 영역은 여전히 미래에 Java 가상 머신이 나타날 것으로 예상되는 주요 장소입니다. 모든 Oracle 제품의 경우 대형 서버도 주요 홈이므로 이 쌍이 나타나는 것이 합리적입니다. PHP 프로그래머는 데이터 집약적인 엔터프라이즈 애플리케이션의 경우 MySQL을 선호하지만 가장 중요한 프로젝트 중 상당수는 여전히 Oracle 기반 아키텍처로 래핑된 Java를 사용하고 있으며 이러한 상황은 조만간 바뀌지 않을 것입니다.
Sun은 GlassFish 애플리케이션 서버가 한 달에 100만 번 이상 다운로드되고 있으며 Tomcat과 같은 오래된 플랫폼이 여전히 일반적이라고 말했습니다. 이 기술은 높이 평가되고 빠르며 진정한 크로스 플랫폼이기 때문에 대기업(예: 은행, 보험 회사)에서는 Java 개발자에 대한 수요가 높습니다.
그러나 Java는 더 이상 최신의 가장 멋진 구문으로 간주되지 않습니다. 일부 프로그래머는 정적으로 유형이 지정된 언어의 구조에 대해 불평하고 Ruby, Python 또는 PHP와 같은 더 새롭거나 간단한 언어로 전환했습니다. 오늘날의 간단한 웹 애플리케이션 중 다수는 작성하는 코드가 수정하기 쉽고 신속하게 프로토타입을 만들 수 있기 때문에 이러한 언어로 개발됩니다. 그러나 이러한 사용하기 쉬운 새로운 언어는 Java에 의존하는 경우가 많습니다. Java 가상 머신이 무거운 작업을 더 잘 처리하고 여러 스레드를 확보할 수 있기 때문에 Ruby 개발자는 JRuby(Java 기반 Ruby 언어)를 자주 사용합니다. Jython(Java 기반 Python 언어)도 비슷합니다.
Java는 이제 이러한 새로운 언어의 침입을 억제하기 위해 최신 프로그래밍 기술 중 일부를 통합하고 있습니다. Grails는 Ruby on Rails의 간단한 선언적 패턴 중 다수를 확실히 모방합니다. Grails 프레임워크는 Groovy와 같은 스크립트 플러그인을 Hibernate라는 데이터베이스 미들웨어와 결합합니다. Groovy 자체는 코드 해석을 용이하게 하기 위해 수많은 동적 옵션을 추가하고 Java API(응용 프로그래밍 인터페이스)의 모든 부분에 직접 연결될 수 있습니다. 매끄럽고 현대적인 구문을 갖춘 Groovy는 Java 프로그래머에게 끝없이 다양한 방대한 라이브러리와 견고한 기본 가상 머신에 대한 액세스를 제공하기 때문에 Python이나 Ruby에 대해 생각할 필요도 없습니다.
모바일로 이동
시장에 나와 있는 가장 단순한 휴대폰 중 다수가 Java ME(Java Platform Micro Edition)를 실행하고 있기 때문에 Java 휴대폰의 수(약 26억 개로 추정)는 엄청납니다. 이를 통해 Wattpad.com과 같은 회사는 제3세계 전체에서 원활하게 작동하는 문서 읽기 플랫폼을 구축할 수 있습니다.
그러나 Java를 실행하는 스마트폰의 수는 상대적으로 적습니다. iPhone의 큰 성공은 많은 사람들이 Objective C를 다시 배우도록 영감을 주었습니다. 이 언어를 통해 프로그래머는 메모리 사용과 같은 일부 시스템 문제에 대한 제어력을 향상시킬 수 있습니다. 자바는 프로그래머에게 근본적인 문제를 대부분 숨기는 것이 장점이지만, 가비지 컬렉션에 작은 오류라도 있으면 일부 게임이 실행되지 않기 때문에 메모리 등의 자원을 관리할 필요가 없다는 것이 전제이다. 안타깝게도 배터리 수명이 매우 중요한 요소이기 때문에 스마트폰은 거의 모든 다른 플랫폼보다 엄격한 리소스 관리가 필요합니다.
그럼에도 불구하고 BlackBerry가 새로운 플랫폼에서 Java ME를 계속 사용함에 따라 Java 프로그래머에 대한 수요가 있습니다. 즉, 휴대폰 프로필에 터치스크린 및 방향 센서에 대한 지원이 추가됩니다. 안드로이드에는 예측할 수 없는 요소가 있습니다. Google이 Android 사용을 허용한 이후 많은 휴대폰 제조업체가 Android의 대세에 뛰어들었습니다.
Google의 Android는 Sun에서 개발한 JDK(Java Development Kit) 및 Java ME가 아닌 오픈 소스 Apache Harmony 및 해당 클래스를 기반으로 구축되었습니다. Eclipse에서 코드를 작성하는 사람에게는 거의 동일하게 보일 것입니다. 다른 많은 경우에는 Android 개발이 많은 XML 형식을 사용하기 때문에 문제가 되지 않지만 두 개발 프레임워크가 서로 멀어지면 이러한 분할이 큰 문제가 될 수 있습니다.
데스크탑 접지를 되찾으세요
대부분의 사람들은 여전히 Java가 데스크탑에서 성공하지 못했다고 생각하고 있으며 그것은 과거입니다. 오늘날 Java는 느리지만 꾸준히 최신 운영 체제의 모든 부분에 침투하고 있습니다. Swing으로 작성된 표준 애플리케이션은 각 플랫폼의 가장 기본적인 부분을 대상으로 하는 데 계속 어려움을 겪고 있지만 JavaFX 및 Web Start와 같은 최신 개발 플랫폼 및 프레임워크를 사용하면 웹을 통해 소프트웨어를 효과적으로 배포하는 것이 가능합니다. 기본 플랫폼은 JAR(Java Archives)의 모든 캐싱을 처리합니다. 링크를 클릭하고 때로는 권한 부여 대화 상자를 몇 번 클릭하면 소프트웨어를 설치하고 업데이트할 수 있으며 언제든지 실행할 수 있습니다.
JavaFX는 아직 확실히 알려지지 않았습니다. 그래픽 기능은 이제 Adobe Flash와 경쟁할 수 있습니다. 컴퓨팅 엔진은 대부분의 Java API를 지원하지만 언어는 정품 Java, JavaScript 및 기타 마크업 언어가 이상하게 혼합되어 있습니다. 코드는 일반 Java보다 간단하므로 Java 프로그래머는 새로운 것을 배워야 합니다. 그러나 대화형 데스크탑 도구의 경우 새로운 애니메이션 클래스를 배우는 것이 가치가 있을 수 있습니다. Web Start는 브라우저를 통해 데스크탑에 직접 소프트웨어를 배포하는 기능을 천천히 개선하고 있습니다.
임베디드 필드 확보
Java는 사람들이 가장 기대하지 않는 곳에서도 번창합니다. C 프로그래머는 Java Virtual Machine의 영리한 저장 및 빠른 실행 기능을 결코 인정하지 않을 수도 있지만, 스마트폰이 아닌 제품, 셋톱 박스, 임베디드 칩, Kindle 및 기타 저전력 장치에서 Java의 성공은 다음과 같습니다. 임베디드 애플리케이션. Java의 인기는 프로그래머가 대규모 플랫폼에서 소규모 플랫폼으로 마이그레이션하는 데에도 도움이 됩니다. 메인프레임용 엔터프라이즈급 애플리케이션 개발에서 소규모 임베디드 코드 개발로 전환하는 것은 쉽지 않지만 Java 표준을 사용하면 다른 많은 도구보다 이러한 전환이 훨씬 쉬워집니다.
Java 패키지도 점점 작아지고 있습니다. Gosling은 동전 크기의 Java 인식 컴퓨터를 설명하기 위해 먼지를 사용했습니다. 이러한 소형 패키지를 위한 가상 머신이자 API인 JavaCard는 네트워크 연결 기능을 추가하는 획기적인 버전인 버전 3.0을 출시할 예정입니다. 이 작은 점들은 아직 사람의 눈에 보일 만큼 작지는 않지만 인터넷과 직접 대화할 수 있다는 점은 매우 매력적입니다.
파트너가 헤어질까요?
모든 개발자의 가장 큰 걱정은 Oracle의 Sun 인수가 마무리되면 어떤 종류의 이해 상충이 바뀔 것인가입니다. Oracle은 대규모 소프트웨어 라이선스 비용을 청구하여 성장했으며, Oracle의 소프트웨어는 고객이 구매하려는 모든 하드웨어에서 실행될 수 있습니다. 반면 Sun은 일반적으로 소프트웨어를 무료로 제공하고 서버를 판매하여 돈을 벌고 있습니다. 이러한 배포 전략은 관성이 너무 크기 때문에 즉시 변경되지 않을 수도 있지만 오라클이 앞으로 어떤 결정을 내릴지는 아무도 모릅니다.
어떤 사람들은 과거에 Oracle이 큰 라이센스 비용을 청구하지 않은 것이 Ellison이 Sun과 유사한 전술을 채택하도록 장려할 뿐이라고 믿습니다. 아마도 Oracle의 영업 팀은 지금 이 기회를 탐내고 있을 것입니다. Java가 무료였던 곳에서 라이센스 비용을 점진적으로 인상하는 것입니다. Java EE(Java Platform Enterprise Edition) 애플리케이션을 다시 작성하지 않기 위해 많은 기업에서는 CPU당 100달러, 200달러 또는 심지어 100만 달러를 지불할 수도 있습니다.
비평가들은 오라클이 다양한 시장에 맞게 다양한 성능 수준을 갖춘 새로운 버전의 Java Virtual Machine을 쉽게 개발할 수 있다고 지적합니다. 데스크탑 가상 머신은 무료로 유지될 수 있으며, Oracle은 Java 및 JavaFX를 출시하기 위해 컴퓨터 공급업체에 비용을 지불할 수도 있으며, 극단적인 멀티스레딩을 처리하는 성능 향상에는 매우 높은 비용이 소요될 수 있습니다. 사용자로부터 돈을 벌 수 있는 방법은 다양하며 라이센스 비용은 종종 훨씬 저렴합니다. 완고한 프로그래머가 먼저 새로운 언어를 배우고 코드 기반을 다시 작성하도록 하는 것은 훨씬 더 비쌉니다.
그러나 일부 사람들은 오라클이 이러한 움직임을 채택하지 않을 것이라고 생각합니다. 2006년 오라클이 인수한 오픈소스 데이터베이스 회사인 슬리피캣(Sleepycat)과 가까운 소식통은 오라클이 기술팀 규모를 약 두 배로 늘렸으며 모든 이중 라이선스 모델은 그대로 유지했다고 말했습니다. 소프트웨어는 여전히 오픈 소스 또는 상용 라이센스 형태로 제공됩니다. Oracle이 Java를 Sleepycat처럼 취급했다면 커뮤니티 라이센스 및 기타 옵션은 여전히 전처럼 무료로 광범위하게 제공될 것이며 코드 개선을 위해 더 많은 엔지니어를 투입할 수 있을 것입니다.
다른 주요 Java 파트너와의 장기적인 관계에 대해서는 더 깊은 질문이 남아 있습니다. Google은 세계의 중심이라는 Sun의 지위를 훼손하려는 의도로 보이는 125만 줄 이상의 코드가 포함된 프로젝트인 Apache Harmony를 계속 지원하고 있습니다. IBM은 Sun에 대한 입찰 전쟁에서 패했고 이제 경쟁사인 Oracle이 더 강해졌습니다. IBM은 Eclipse 개발 도구를 설계했으며 Java 플랫폼을 다른 방향으로 전환하기 시작할 수도 있습니다.
다른 파트너는 더 공격적이었습니다. SAP 최고 기술 책임자 Vishal Sikka는 2007년 Oracle이 제안한 계획에 초점을 맞춰 Sun에게 JCP(Java Community Process)를 출시해 달라고 반복적으로 요청했습니다. 즉, 개방적이고 독립적이며 공급업체 중립적인 표준 조직과 모든 표준 조직에 제어권을 넘겨주는 것입니다. 회원은 기회균등을 전제로 참여합니다. Oracle은 세부 사항에 대해 대부분 침묵을 지키고 있지만 Sun으로부터 물려받은 일부 아이디어에 대한 존중을 다시 얻을 것이라고 가정하는 것이 안전합니다.
그러나 다른 파트너가 협박을 할 수도 있지만 정도의 문제를 고려할 수 있습니다. 실제로 모든 사람이 서로를 제지하고 과도한 행동이 차단될 가능성이 높기 때문에 일단 작성되면 모든 곳에서 운영 개념의 장점을 인식하기 때문입니다. Android 휴대폰용으로 작성된 코드를 Sony Blu-ray 플레이어 또는 Glassfish 서버로 쉽게 마이그레이션할 수 없다면 다른 언어가 등장할 기회가 있습니다. 실제로 여러 회사에서는 이미 사용자가 iPhone에서 Ruby on Rails 또는 Python 소프트웨어를 쉽게 실행할 수 있는 툴킷을 작성하고 있습니다.
또한 이러한 새로운 언어 중 다수는 심각한 경쟁자가 될 수 있으며 너무 많은 내분은 언어가 기반을 확보하는 데 도움이 될 뿐입니다. 열성 팬이 약간의 변환을 통해 일반적으로 모든 플랫폼에 이식할 수 있는 매우 훌륭하고 덜 알려진 오픈 소스 패키지가 수십 개 있습니다. 예를 들어 Python은 이미 일부 과학 분야의 주요 언어이며 Google은 App Engine에서 지원하는 첫 번째 언어로 Java 대신 Python을 선택했습니다. IBM, Oracle, Google은 지배력 경쟁에서 서로를 압박할 수 있지만 독점이 아닌 표준화의 혜택을 모두가 누릴 수 있다는 점을 인식해야 합니다. 누군가 감히 다른 사람을 너무 배제하고 Java를 통제하려고 하면 다른 공급업체가 경쟁업체로 달려갈 수 있습니다.
Java에서도 앱 스토어가 열리나요?
Java 코드 기반이 상대적으로 응집력 있고 상대적으로 표준화되어 있다는 사실로 인해 Sun(그리고 합병이 성사될 경우 Oracle)이 어떻게 Java의 편재성을 활용하여 라이센스 비용을 인상하거나 모든 사람을 몰아내지 않고도 돈을 벌 수 있는지에 대한 추측이 촉발되었습니다. 누군가가 전체 Java 생태계를 위한 App Store를 개발하여 iPhone용 앱처럼 Java로 작성된 위젯을 판매한다면 어떨까요? 데스크탑, 휴대폰, 블루레이 플레이어에 있을 수 있거나 Java를 사용하는 다른 플랫폼에서 실행될 수 있다면 어떨까요? ?
최근에는 안드로이드 폰용 애플리케이션이 상당히 많아지고 있으며, 썬도 사람들이 간단히 애플리케이션을 데스크탑으로 드래그하거나, 각 애플리케이션을 데스크탑에 추가하기 위해 조금만 더 작성할 수 있도록 Java 스토어를 계획하고 있습니다. , Java 세계의 거의 모든 곳에서 실행될 수 있습니다. 그럼에도 불구하고 매우 다양한 화면과 사용자 인터페이스를 처리하는 것은 어려울 수 있습니다.
이 시나리오가 얼마나 매력적인지 상상해 보십시오. 개발자가 작성한 애플리케이션이 Android 휴대폰에서 실행되고, 그는 책상에서 작업을 수행하고, 집에 도착하면 거실에 있는 Blu-ray 플레이어에서 원활하게 실행됩니다.
소파에 앉아 있는 사람들에게 Java 애플리케이션을 제공하는 것은 전혀 예상치 못한 일입니다. 왜냐하면 Java 언어는 원래 Oak라고 불렸던 초기에 셋톱 박스에서 실행되도록 의도되었기 때문입니다. 이 비전은 Java 플랫폼의 가장 큰 장점인 인기와 플랫폼 간 안정성에 의존할 것입니다. 아마도 이러한 장점은 Java가 개발자에게 지속적인 수입을 가져다주는 데 도움이 될 것입니다.