Кіріспе

Java стандартты сыныптар кітапханасын іске асыру

GNU Classpath – Java бағдарламалау тілі үшін стандартты сыныптар кітапханасының ашық кодты бағдарламалық жасақтамасы. J2SE 1.4 және 5.0 нұсқаларының көптеген сыныптары іске асырылған. Осылайша, Classpath Java негізіндегі қосымшаларды іске қосу үшін қолданылуы мүмкін. GNU Classpath – GNU жобасының бір бөлігі. Бұл жоба бастапқыда лицензиялық келіспеушіліктерге байланысты libgcj жобасымен бірге әзірленді, бірақ кейін екі жоба біріктірілді. GNU Classpath-ке Ерікді Бағдарламалық Қамтамасыз ету Қоры тарапынан жоғары дәреже берілді. Classpath жобасы басталған кезде, Sun Microsystems компаниясының Java-ның ресми іске асырылу лицензиясы, ешқандай өзгерістерді таратуға рұқсат бермейтін. Classpath жобасы басталғаннан бері OpenJDK GPL лицензиясымен шығарылды және қазір Java платформасының ресми анықтамалық іске асырылуы болып табылады.

Лицензия

GNU Classpath GNU жалпыға ортақ лицензиясы (GNU General Public License) бойынша лицензияланған, бірақ байланысқа қатысты ерекшелік бар. Бұл – ақысыз бағдарламалық қамтамасыз ету лицензиясы. Барлық код Free Software Foundation-ның меншігінде, және бұл меншік иесі әзірлеушілерге қатысты өз шарттық міндеттемелерімен шектеулі.

Тарих

GNU Classpath 1998 жылы бес бағдарламашымен бастау алды. Тарихы барысында ол Kaffe және libgcj сияқты ұқсас мақсаттары бар басқа жобалармен бірнеше рет бірікті. Бұрын GNU Classpath өзінің виртуалды машинасы (Japhar) болған. Classpath көптеген жобалармен ортақ қолданылатын базалық кітапханаға айналған соң, бұл виртуалды машинаға назар азайды және қазір қолдау көрсетілмейді. Java 1.4 API-ның басым бөлігін іске асырғаннан кейін, жобадағы жұмыс API-ны кеңейтуге емес, қателерді жоюға бағытталды. 2006 жылдың 24 қазанында соңғы жетіспейтін 1.4 класы – HTMLWriter іске асырылды. Даму жылдамдығы (күн сайынғы жаңа кодтар санының орташасы ретінде математикалық есептелген) 2006 жылы ең жоғары деңгейге жетті. GNU Classpath атауын алғашқы әзірлеушілердің бірі Пол Фишерге Брэдли М. Кун ұсынған. Сол кезде ашық Java іске асыру қауымдастығында Sun компаниясының Java сауда белгісін ашық іске асыруларға қарсы қолдануына қатысты үлкен алаңдаушылық болды. Кун $CLASSPATH атауын ұсынды, ол көптеген Java жүйелері Java кітапханаларының орналасқан жерін көрсету үшін қолданатын орта айнымалысы. $CLASSPATH көбінесе java сөзін қамтитын жол атауымен (мысалы, /usr/lib/java) кеңейтілгендіктен, бұл Java атауын тікелей айтпастан қолданудың бір жолы болды. Фишер және басқа да бағдарламашылар $ белгісін және барлық әріптерді үлкен етіп жазуды ұнатпады және Classpath-қа тоқталысты.

Даму тобы

Жөндеуші жобаның заңдық мәселелерін шешеді, жобаның үнемі жаңа нұсқаларын дайындайды және сапаны бақылайды. Жөндеуші сонымен қатар CVS-ке кіруге рұқсат береді. GNU Classpath-тың ресми иерархиясы жоқ. Жұмысты ең білікті мамандар атқарады, және жұмысқа қатаң бөлініс те жоқ. Барлық код өзгерістері алдымен талқылау тізіміне түзетулер түрінде жіберіледі, онда қажет болған жағдайда оларға қарсылық білдірілуі мүмкін. Жобаға әдетте күніне бес-сегіз түзету түседі. GNU Classpath кітапханасының кодты қамту деңгейін OpenJDK6 және OpenJDK7-мен салыстырып бақылауға болады.

Виртуалды машинаны интеграциялау

GNU Classpath ресми Java API атау кеңістігіндегі кластарды қамтиды. Егер негізгі кодқа шақыру қажет болса немесе осы шақырулар аса қажет болса, олар аз ғана "VM" кластары арқылы жүзеге асырылады. Мұндай VM класының атауы, негізгі әдістерді қажет ететін кластың атауымен сәйкес келеді және қосымша "VM" префиксімен толықтырылады: VMObject, VMString және т.б. Қалған кодтан бөлек сақталатын VM кластары пакеттік және соңғы болып табылады. Бұл кластардың әдістерінде "native" кілт сөзі болады, ол қолдау көрсету үшін негізгі кітапхананың қажеттілігін көрсетеді. Мұндай кітапханаларды Java виртуалды машинасының авторлары ұсынады, сондықтан GNU Classpath, егер аталған виртуалды машинаның бастапқы коды қолжетімді және өзгертілуге жарамды болса, дерлік кез келген Java виртуалды машинасына қосылуы мүмкін.

Java 1.5 тілінің жаңа мүмкіндіктерін қолдау

0.95 нұсқасына дейін әр GNU Classpath релизі екі бөлек релизтік архивтен тұратын; бірі негізгі даму тармағының күйін көрсететін, ал екіншісі Java 1.5-тегі generics, enum және аннотациялар сияқты жаңа мүмкіндіктерді қолдайтын, тәжірибелік тармақтың мазмұнын қамтитын. 0.95 нұсқасынан бастап Java 1.5-тегі generics сияқты жаңа мүмкіндіктер негізгі тармаққа толыққандай енгізілді. Java 1.5 кодынан байт-код жасау үшін Eclipse компиляторы ecj қолданыла алады. GCJ жағдайында, ол осы алғашқы кезеңді орындау үшін ecj-ді пайдаланады, содан кейін байт-кодты машиналық кодқа түрлендіреді. 0.95 нұсқасынан бастап GNU Classpath GNU Classpath-ты пайдаланып, жаңадан GPL лицензиясымен шыққан ашық кодты javac компиляторын құрастыру және іске қосуды қолдайды, сондай-ақ GNU Classpath сыныптар кітапханасын, құралдарын және мысалдарының javac арқылы құрастырылуына мүмкіндік береді.

Omg.org доменінен алынған сыныптар

GNU Classpath еркін емес лицензияға ие кодты немесе еркін емес лицензияға ие кодтан автоматты түрде жасалған кодты қабылдамайды. Стандартты Java API-де omg.org доменінен көптеген кластар бар, олар әдетте Object Management Group ұйымы шығарған IDL файлдарынан жасалады. Бұл файлдардың "қолдануға болады, бірақ өзгертуге болмайды" лицензиясы еркін емес деп есептеледі. Осы себепті, GNU Classpath жобасындағы аталған кластар тек ресми жарияланған OMG спецификацияларын пайдаланып, бастапқы кодтан жазылды. Сондықтан GNU Classpath-тың осы бөлігі жобадағы кез келген басқа код сияқты толығымен еркін.