Кіріспе
Java бағдарламалау тілі Ашық кодты іске асыру
Apache Harmony – Apache Software Foundation әзірлеген, ашық кодты, тегін Java іске асыру. Ол 2005 жылдың мамыр айының басында жарияланды, ал 2006 жылдың 25 қазанында директорлар кеңесі Apache Harmony жобасын жоғарғы деңгейдегі жоба ретінде бекітті. Harmony жобасы 2011 жылдың ақпан айына дейін J2SE 5.0 стандартының 99% және Java SE 6 стандартының 97% толықтығына қол жеткізді. Android операциялық жүйесі тарихи тұрғыдан Harmony-нің маңызды қолданушысы болды, бірақ Android Nougat нұсқасынан бастап OpenJDK кітапханаларын көбірек пайдалана бастады. 2011 жылдың 29 қазанында жоба жетекшісі Тим Эллисон жобаны тоқтату туралы дауыс беруді ұсынды. Дауыс беру нәтижесінде 20-2 есебімен жоба тоқтатылды және 2011 жылдың 16 қарашасында жоба тоқтатылды.
Іске қосу
Harmony жобасы бастапқыда Java-ның ашық бастапқы кодты бағдарламаларын әзірлейтін барлық әзірлеушілерді біріктіру мақсатымен құрылды. Көптеген әзірлеушілер бұл жобаның GNU, Apache және басқа да қауымдастықтардан жоғары тұратынын күтті. GNU әзірлеушілері жобаның алғашқы дайындық кезеңіндегі жоспарлауға шақырылып, қатысты. Apache кейіннен GNU Classpath кодынан бас тартты, себебі Harmony-ді Apache License v2 лицензиясымен қолжетімді етуді қалады. Apache әзірлеушілері қажетті кластарды бастапқы кодтан жазып, бағдарламалық қамтамасыз ету компанияларынан үлкен көлемде код сыйлықтарын күтті. Жобаның басында туындаған түрлі түсініспеушіліктер және IBM сияқты ірі компаниялардың қолданыстағы кодты ұсынуы, ашық Java қауымдастығындағы кейбір адамдарды бұл жобаны Apache жобасы емес, корпоративтік консорциум деп қарауға итермеледі. GNU Classpath және Apache Harmony жобалары арасындағы негізгі қайшылық – олардың үйлеспейтін лицензиялары болды: Classpath-тың GNU General Public License лицензиясы (байланыс ерекшелігімен) және Harmony-дің Apache License лицензиясы. Лицензия ASF үшін қабылдауға жарамсыз болды, себебі ол Java Community Process ережелеріне сәйкес келмейтін, Harmony пайдаланушыларына қолжетімді пайдалану саласын шектеу арқылы құқықтарды шектеді. Sun компания өз блогында Java платформасының GPL лицензиясымен, соның ішінде TCK-мен ашық бастапқы кодты жасауды жоспарлағанын, бірақ олардың басымдығы Java платформасын GPL лицензиясымен Linux қауымдастығына мүмкіндігінше жылдам қолжетімді ету екенін мәлімдеді. Бұл жауапқа әртүрлі реакциялар болды: бірі Sun-ды ашық хатқа «жеткілікті ашық түрде» жауап бермегені үшін сынады, екіншілері Apache Software Foundation-ды сынға алды; кейбіреулер ASF-тің Sun-нен дипломатиялық жолмен алуға болатын нәрсені талап етуі ақылсыздық болғанын, әсіресе ашық сынып кітапханасының уақытын ескере отырып, ойлады. Sun 2007 жылдың мамыр айында OpenJDK-ны, сонымен қатар OpenJDK-дан негізгі бөлігі алынған кез келген GPL-үйлесімді жүйеде TCK-ны іске қосуға мүмкіндік беретін арнайы лицензиямен бірге шығарды. Бұл Apache Harmony-ге қатысты емес, себебі ол GPL лицензиясын қолданбайды. 2010 жылдың 9 желтоқсанында Apache Software Foundation Harmony жобасы үшін Apache-қа қолайлы лицензия алудың қиындығына наразылық білдіре отырып, Java Community Process Executive Committee-ден кетті.
Android SDK-да қолдану
Google-дің Android платформасында қолданылатын виртуалды машина (Dalvik 4.4 нұсқасына дейін және оның ізбасары Android Runtime (ART)) өз кластық кітапханасының ядросы үшін Harmony-нің бір бөлігін пайдаланады. Дегенмен, Dalvik Java SE немесе Java ME кластық кітапханасының профильдерімен үйлеспейді (мысалы, J2ME кластары, AWT және Swing қолдау көрсетілмейді). Android 7.0 "Nougat" Harmony-ні OpenJDK-мен алмастырды. IBM-нің Linux және ашық код бөлімінің басшысы Боб Сутор «IBM өзінің әзірлеу күшін Apache Project Harmony-дан OpenJDK-ға көшіреді» деп жазды. 2011 жылдың наурызында IBM-нің Тим Эллисон Harmony жобасын басқару төрағасы қызметінен кеткенін хабарлады. IBM жобадан қол үзгеннен кейін, жобаның белсенділігі күрт төмендеді. 2011 жылдың 29 қазанында жоба жетекшісі Тим Эллисон Harmony dev пошталық тізімінде жобаны жабу туралы дауыс беруді бастады. 3 қарашадағы дауыс беру нәтижесі 20-2 есебімен жабуды қолдады. Бір директор, Ларри Розен, ұсыныстың мәніне емес, уақытына байланысты «жоқ» деп дауыс берді; қалғандары бірауыздан қолдады. Олардың күш-жігері сәтті болған сияқты.
Соңғы даму жағдайы
Apache Harmony 2006 жылдың 29 қазанында Apache жобаларының ресми тізіміне қабылданды.
Сынып кітапханасының қамтылуы
Бағдарламалық қамтамасыз ету компанияларынан күтілген қаржылар іс жүзінде түсті. Apache Harmony енді жұмыс істейтін кодты қамтиды, оның ішінде Intel компаниясы ұсынған Swing, AWT және Java 2D кодтары бар. 2011 жылға қарай Harmony жобасы JDK 5.0 үшін 99% және Java SE 6 үшін 97% толықтығына жетті. Сонымен қатар, Java SE 6.0 үшін дамытылып жатқан Harmony v6.0 тармағы да бар. Apache Harmony әзірлеушілері өз мақсаттарына жету үшін (текершікті қайта ойлап табудың қажеті жоқ) бірнеше сынақтан өткен, қолданыстағы ашық кодты жобаларды біріктіреді. Бұл жобалардың көпшілігі жетілген және кеңінен танымал, ал кітапхананың қалған бөліктерін бастан жазу қажет болды. Бұл Apache Harmony жобасында қолданылатын ашық кодты компоненттердің тізімі; олардың кейбіреулері жоба басталғанға дейін де қолданыста болған. Компоненттің сипаттамасы: ICU – Unicode қолдау және бағдарламалық қамтамасыз етуді халықаралық деңгейде қолдану және жаһандану үшін C/C++ және Java кітапханалары. Apache Xalan – Java және C++ үшін XSLT стильдік кесте процессоры, XPath тілін іске асырады. Apache Xerces – Java, C++ және Perl үшін XML талдаушы кітапханасы. Apache Portable Runtime – платформалық тәуелсіздікті қамтамасыз ететін, платформалар аралық абстракция кітапханасы. Apache CXF – SOAP, XML/HTTP, RESTful HTTP, CORBA сияқты протоколдар бойынша жұмыс істейтін, жоғары өнімділікке ие веб-қызметтер шеңбері. BCEL – бинарлық Java сыныптарын бөлшектеуге, өзгертуге және қайта құрастыруға арналған кітапханалар, яғни байткод. MX4J – Java Management Extensions (JMX) құралдары, арқылы қолданбаларды, жүйелік объектілерді, құрылғыларды және қызметке бағытталған желілерді басқару және бақылау. VM Magic – Java тілінде жүйелік бағдарламалауды жеңілдету үшін, тікелей жад операцияларын қосу арқылы Java тіліне арналған кеңейтулер жиынтығы. Bouncy Castle Libraries – Java және C# үшін жеңіл криптографиялық кітапханалар жиынтығы. ANTLR – көптеген мақсатты тілдерде әрекеттерді қамтитын грамматикалық сипаттамалардан танушылар, интерпретаторлар, компиляторлар және аудармашылар құруға арналған тіл құралы.
Құжаттамалық
Гармония, альтернативті Java-ның ашық бастаулы іске асырылымдарына қарағанда, нашар құжатталған. Мысалы, GNU Classpath-та орталық CORBA класының (ORB) әрбір әдісі стандартты абстрактілі API класында да, іске асырылуында да түсіндірмелермен жабдықталған. Harmony жобасында қолданылған Yoko жобасында 2006 жылдың қазан айының соңында стандартты жариялауда да, іске асыру класында да көптеген әдістер құжатталмаған еді. Сонымен қатар, GNU Classpath CORBA-ның ескі және жаңа мүмкіндіктерін де қолдады (Sun-ның іске асырылымы сияқты). Гармония, керісінше, ескі стандарттың орталық әдісін (ORB.connect(Object)) толық іске асырмай қалдырды.
Құралдар
Java платформасын толық іске асыру үшін Java бастапқы кодын байт-кодқа аударатын компилятор, JAR файлдарын басқаратын бағдарлама, қателерді жою құралы, апплеттерді қараушы және веб-браузерге қосымша плагин сияқты бірнеше нәрсе қажет. Harmony құрастырғышы, апплет қараушысы, jarsigner, javah, javap, keytool, policytool және unpack200 мүмкіндіктерін ұсынады.