GNU Classpath

Поделись знанием:
Перейти к: навигация, поиск
GNU Classpath

Демонстрационное приложение GNU Classpath с интерфейсом Swing
Тип

Библиотека

Разработчик

Проект GNU
(formally held by FSF)

Написана на

C и Java

Операционная система

Cross-platform

Последняя версия

0.99 [1] (7 марта 2012)

Состояние

Active

Лицензия

GNU GPL+GNU linking exception

Сайт

[www.classpath.org sspath.org]

GNU ClasspathGNU Classpath

GNU Classpath представляет собой проект, направленный на создание свободной реализации стандартной библиотеки классов для языка программирования Java. Несмотря на большой размер библиотеки, большая часть задачи уже выполнена, включая Swing, CORBA, и другие основные элементы. Разработчики Classpath реализовали почти все классы J2SE 1.4 и 5.0. Таким образом, Classpath можно использовать для запуска популярных Java-программ, таких, как Vuze и Eclipse.

GNU Classpath является одним из самых приоритетных направлений проекта GNU. Хотя исходный код «официальной» реализации от Sun Microsystems доступен, лицензия не допускает распространения каких-либо изменений. Это было серьёзным препятствием для многих инновационных проектов, которые не могли развиваться, не изменяя этот код. Сообщество разработчиков GNU Classpath включает в себя учреждения, ориентированные на исследования в области виртуальных машин Java, а также компании, заинтересованные в предоставлении альтернативных сред выполнения Java.

GNU Classpath входит в состав Free Software Foundation. Первоначально он был разработан параллельно с libgcj из-за несовместимости лицензий, но позднее проекты были объединены.





Лицензия

GNU Classpath выпускается под лицензией GNU General Public License с linking exception. Это лицензия на свободное ПО. Весь код формально принадлежит Free Software Foundation, и этот владелец обязан соблюдать свои договорные обязательства перед разработчиками.

Применения

GNU Classpath используется многими свободными средами выполнения Java (такими, как Kaffe, SableVM, JamVM, CACAO, Jikes RVM), потому что каждая полнофункциональная виртуальная машина Java должна обеспечить реализацию стандартных библиотек классов.

Другие области применения включают:

  • GNU компилятор для Java, способный компилировать Java-код в родные самостоятельные приложения.
  • [www.koders.com/java/fid00976F58DD49540480F81EB78F2C2492A3393CD1.aspx GCJAppletViewer] для запуска Java апплетов из командной строки, если они не поддерживаются используемым браузером.
  • Проект IcedTea использует GNU Classpath как замену отсутствующей Java Class Library, остающейся проприетарной/закрытой в OpenJDK.
  • IKVM.NET, интегрирующий Java с .NET Framework
  • JNode, операционная система для запуска Java-приложений. Эта система написана только на языке Java и языке ассемблера.
  • Специализированные виртуальные машины, такие, как Jaos, для интеграции с языком программирования Oberon и JamaicaVM для встраиваемых систем реального времени.
  • Виртуальные машины для распределенных вычислений в кластерах, имеющих до 128 процессоров на Myrinet ([www.eecg.toronto.edu/jupiter/]).

История

Разработка GNU Classpath началась в 1998 году с 5 разработчиками. За всю свою историю он несколько раз объединялся с другими проектами, имеющими сходные цели (Kaffe, libgcj). В прошлом GNU Classpath поставлял свою собственную виртуальную машину (Japhar). Когда Classpath стал базовой библиотекой, использующейся совместно во многих проектах, виртуальной машине уделялось всё меньше и меньше внимания, и в настоящее время она не поддерживается.

После реализации большинства официальных Java 1.4 API работа в рамках проекта стала больше ориентированной на поиск и устранение ошибок, чем на охват API. В октябре, 24, 2006 была завершена реализация последнего отсутствующего Java 1.4 класса, [java.sun.com/j2se/1.4.2/docs/api/javax/swing/text/html/HTMLWriter.html HTMLWriter]. Скорость разработки (вычисляется математически как среднее число новых строк кода в день) достигла рекордного уровня в 2006 году.

Название GNU Classpath было предложено Брэдли М. Куном одному из первых разработчиков, Полу Фишеру. В то время была глубокая озабоченность в сообществе свободных реализаций Java о применении торговой марки Sun на Java против свободных реализаций. Кун предложил название $CLASSPATH, являющееся environment variable, используемой большинством Java-систем для указания расположения на компьютере Java-библиотек. Так как $CLASSPATH часто раскрывается в путь, включающий слово java (напр., /usr/lib/java), это был способ назвать Java без называния. Фишеру и другим разработчикам не понравилось неприглядное использование $ и всех букв в верхнем регистре, поэтому остановились на Classpath.

Команда разработчиков

Команда проекта состоит из около 70 разработчиков (из них в настоящее время активны только 20) и одного активного сопровождающего (мейнтейнера). Сопровождающий берет на себя юридическую сторону проекта, готовит очередные релизы проекта и управляет качеством. Сопровождающий также предоставляет доступ к CVS.

В отличие от некоторых проектов, у GNU Classpath отсутствует строгая иерархия. Работа выполняется наиболее технически способными, и отсутствует строгое разделение работы. Все изменения кода сначала отправляются в виде патчей в список обсуждения, где они могут быть при необходимости отклонены. Проект получает от пяти до восьми патчей в сутки.

Проект имеет свой собственный инструмент тестирования (Mauve), содержащий около 175000 тестов, и осуществляет ежедневную проверку, чтобы убедиться, что классы проекта совместимы с классами официального Sun API.

Прогресс покрытия кода библиотеки GNU Classpath можно отслеживать с J2SE 1.4[2] и Java SE 5.0[3].

Интеграция с виртуальной машиной

GNU Classpath содержит классы из официального пространства имён Java API. Там, где нужны или очень желательны вызовы машинного кода, это делается из малого количества специально для этого построенных «VM»-классов (VM — виртуальная машина). Название такого класса совпадает с именем класса, требуемого нативного метода плюс дополнительный префикс VM: VMObject, VMString и так далее. Классы VM хранятся отдельно от остальной части кода, имеют атрибуты package private или final. Методы этих классов содержат ключевое слово native, указывающее на необходимость поддерживающей библиотеки. Такие библиотеки предоставляется авторами виртуальной машины Java. Поэтому GNU Classpath может быть подключен к практически любой виртуальной машине Java, если исходный код такой машины доступен и может быть изменён.

Поддержка новых возможностей языка в 1.5

До версии 0,95 каждый релиз GNU Classpath состоял из двух отдельных архивов: одного, представляющего состояние главной ветки разработки, и другого, содержащего более экспериментальную ветку, поддерживающую дополнения, такие, как generics, перечисления и аннотации, присутствующие в Java 1.5.

Начиная с версии 0,95, дополнения Java 1.5, такие, как generics, были полностью интегрированы в главную ветку. Ветка позволяет GCJ использовать компилятор Eclipse, ecj, чтобы скомпилировать исходный код Java 1.5 в байт-код, который затем преобразовывается в машинный код с помощью GCJ[1].

Взаимодействие со свободным компилятором Sun

Начиная с версии 0,95 GNU Classpath поддерживает компиляцию и запуск свободного GPL javac компилятора с использованием Classpath runtime (GIJ) и компилятора (GCJ), а также позволяет компилировать библиотеку классов GNU Classpath, инструменты и примеры самим javac.

Классы из домена omg.org

GNU Classpath не принимает код под несвободной лицензией или автоматически сгенерированный из кода под несвободной лицензией. Стандартный Java API содержит множество классов из домена omg.org, обычно генерирующиеся из IDL-файлов, выпущенных Object Management Group. Лицензия, которая позволяет только использовать, но не изменять эти файлы, считается несвободной. Именно по этой причине упомянутые классы в проекте GNU Classpath были заново переписаны на основе только официальных печатных спецификаций OMG. Следовательно, эта часть GNU Classpath так же свободна, как и любой другой код в проекте.

См. также

Напишите отзыв о статье "GNU Classpath"

Примечания

  1. 1 2 [www.gnu.org/software/classpath/announce/20090205.html The release of GNU Classpath 0.98 «Better Late Than Never»]
  2. [www.kaffe.org/~stuart/japi/htmlout/h-jdk14-classpath.html GNU Classpath Library Coverage against J2SE 1.4]
  3. [www.kaffe.org/~stuart/japi/htmlout/h-jdk15-classpath.html GNU Classpath Library Coverage against Java SE 5.0]

Ссылки

  • [www.gnu.org/software/classpath/ .org/software/classpath/] — официальный сайт GNU Classpath
  • [developer.classpath.org/doc/ Automatically generated documentation, including source code]
  • [builder.classpath.org Test runs and binary compatibility tests]
  • [lwn.net/Articles/184967/ May 2006 article by a GNU Classpath developer about the state of free java project collaborations]
  • [public.smi.ethz.ch/blog/2006/01/25/permeable-development/ Permeable Development]

Отрывок, характеризующий GNU Classpath



В покинутой корчме, перед которою стояла кибиточка доктора, уже было человек пять офицеров. Марья Генриховна, полная белокурая немочка в кофточке и ночном чепчике, сидела в переднем углу на широкой лавке. Муж ее, доктор, спал позади ее. Ростов с Ильиным, встреченные веселыми восклицаниями и хохотом, вошли в комнату.
– И! да у вас какое веселье, – смеясь, сказал Ростов.
– А вы что зеваете?
– Хороши! Так и течет с них! Гостиную нашу не замочите.
– Марьи Генриховны платье не запачкать, – отвечали голоса.
Ростов с Ильиным поспешили найти уголок, где бы они, не нарушая скромности Марьи Генриховны, могли бы переменить мокрое платье. Они пошли было за перегородку, чтобы переодеться; но в маленьком чуланчике, наполняя его весь, с одной свечкой на пустом ящике, сидели три офицера, играя в карты, и ни за что не хотели уступить свое место. Марья Генриховна уступила на время свою юбку, чтобы употребить ее вместо занавески, и за этой занавеской Ростов и Ильин с помощью Лаврушки, принесшего вьюки, сняли мокрое и надели сухое платье.
В разломанной печке разложили огонь. Достали доску и, утвердив ее на двух седлах, покрыли попоной, достали самоварчик, погребец и полбутылки рому, и, попросив Марью Генриховну быть хозяйкой, все столпились около нее. Кто предлагал ей чистый носовой платок, чтобы обтирать прелестные ручки, кто под ножки подкладывал ей венгерку, чтобы не было сыро, кто плащом занавешивал окно, чтобы не дуло, кто обмахивал мух с лица ее мужа, чтобы он не проснулся.
– Оставьте его, – говорила Марья Генриховна, робко и счастливо улыбаясь, – он и так спит хорошо после бессонной ночи.
– Нельзя, Марья Генриховна, – отвечал офицер, – надо доктору прислужиться. Все, может быть, и он меня пожалеет, когда ногу или руку резать станет.
Стаканов было только три; вода была такая грязная, что нельзя было решить, когда крепок или некрепок чай, и в самоваре воды было только на шесть стаканов, но тем приятнее было по очереди и старшинству получить свой стакан из пухлых с короткими, не совсем чистыми, ногтями ручек Марьи Генриховны. Все офицеры, казалось, действительно были в этот вечер влюблены в Марью Генриховну. Даже те офицеры, которые играли за перегородкой в карты, скоро бросили игру и перешли к самовару, подчиняясь общему настроению ухаживанья за Марьей Генриховной. Марья Генриховна, видя себя окруженной такой блестящей и учтивой молодежью, сияла счастьем, как ни старалась она скрывать этого и как ни очевидно робела при каждом сонном движении спавшего за ней мужа.
Ложка была только одна, сахару было больше всего, но размешивать его не успевали, и потому было решено, что она будет поочередно мешать сахар каждому. Ростов, получив свой стакан и подлив в него рому, попросил Марью Генриховну размешать.
– Да ведь вы без сахара? – сказала она, все улыбаясь, как будто все, что ни говорила она, и все, что ни говорили другие, было очень смешно и имело еще другое значение.
– Да мне не сахар, мне только, чтоб вы помешали своей ручкой.
Марья Генриховна согласилась и стала искать ложку, которую уже захватил кто то.
– Вы пальчиком, Марья Генриховна, – сказал Ростов, – еще приятнее будет.
– Горячо! – сказала Марья Генриховна, краснея от удовольствия.
Ильин взял ведро с водой и, капнув туда рому, пришел к Марье Генриховне, прося помешать пальчиком.
– Это моя чашка, – говорил он. – Только вложите пальчик, все выпью.
Когда самовар весь выпили, Ростов взял карты и предложил играть в короли с Марьей Генриховной. Кинули жребий, кому составлять партию Марьи Генриховны. Правилами игры, по предложению Ростова, было то, чтобы тот, кто будет королем, имел право поцеловать ручку Марьи Генриховны, а чтобы тот, кто останется прохвостом, шел бы ставить новый самовар для доктора, когда он проснется.
– Ну, а ежели Марья Генриховна будет королем? – спросил Ильин.
– Она и так королева! И приказания ее – закон.
Только что началась игра, как из за Марьи Генриховны вдруг поднялась вспутанная голова доктора. Он давно уже не спал и прислушивался к тому, что говорилось, и, видимо, не находил ничего веселого, смешного или забавного во всем, что говорилось и делалось. Лицо его было грустно и уныло. Он не поздоровался с офицерами, почесался и попросил позволения выйти, так как ему загораживали дорогу. Как только он вышел, все офицеры разразились громким хохотом, а Марья Генриховна до слез покраснела и тем сделалась еще привлекательнее на глаза всех офицеров. Вернувшись со двора, доктор сказал жене (которая перестала уже так счастливо улыбаться и, испуганно ожидая приговора, смотрела на него), что дождь прошел и что надо идти ночевать в кибитку, а то все растащат.
– Да я вестового пошлю… двух! – сказал Ростов. – Полноте, доктор.
– Я сам стану на часы! – сказал Ильин.
– Нет, господа, вы выспались, а я две ночи не спал, – сказал доктор и мрачно сел подле жены, ожидая окончания игры.
Глядя на мрачное лицо доктора, косившегося на свою жену, офицерам стало еще веселей, и многие не могла удерживаться от смеха, которому они поспешно старались приискивать благовидные предлоги. Когда доктор ушел, уведя свою жену, и поместился с нею в кибиточку, офицеры улеглись в корчме, укрывшись мокрыми шинелями; но долго не спали, то переговариваясь, вспоминая испуг доктора и веселье докторши, то выбегая на крыльцо и сообщая о том, что делалось в кибиточке. Несколько раз Ростов, завертываясь с головой, хотел заснуть; но опять чье нибудь замечание развлекало его, опять начинался разговор, и опять раздавался беспричинный, веселый, детский хохот.


В третьем часу еще никто не заснул, как явился вахмистр с приказом выступать к местечку Островне.
Все с тем же говором и хохотом офицеры поспешно стали собираться; опять поставили самовар на грязной воде. Но Ростов, не дождавшись чаю, пошел к эскадрону. Уже светало; дождик перестал, тучи расходились. Было сыро и холодно, особенно в непросохшем платье. Выходя из корчмы, Ростов и Ильин оба в сумерках рассвета заглянули в глянцевитую от дождя кожаную докторскую кибиточку, из под фартука которой торчали ноги доктора и в середине которой виднелся на подушке чепчик докторши и слышалось сонное дыхание.
– Право, она очень мила! – сказал Ростов Ильину, выходившему с ним.
– Прелесть какая женщина! – с шестнадцатилетней серьезностью отвечал Ильин.
Через полчаса выстроенный эскадрон стоял на дороге. Послышалась команда: «Садись! – солдаты перекрестились и стали садиться. Ростов, выехав вперед, скомандовал: «Марш! – и, вытянувшись в четыре человека, гусары, звуча шлепаньем копыт по мокрой дороге, бренчаньем сабель и тихим говором, тронулись по большой, обсаженной березами дороге, вслед за шедшей впереди пехотой и батареей.
Разорванные сине лиловые тучи, краснея на восходе, быстро гнались ветром. Становилось все светлее и светлее. Ясно виднелась та курчавая травка, которая заседает всегда по проселочным дорогам, еще мокрая от вчерашнего дождя; висячие ветви берез, тоже мокрые, качались от ветра и роняли вбок от себя светлые капли. Яснее и яснее обозначались лица солдат. Ростов ехал с Ильиным, не отстававшим от него, стороной дороги, между двойным рядом берез.
Ростов в кампании позволял себе вольность ездить не на фронтовой лошади, а на казацкой. И знаток и охотник, он недавно достал себе лихую донскую, крупную и добрую игреневую лошадь, на которой никто не обскакивал его. Ехать на этой лошади было для Ростова наслаждение. Он думал о лошади, об утре, о докторше и ни разу не подумал о предстоящей опасности.
Прежде Ростов, идя в дело, боялся; теперь он не испытывал ни малейшего чувства страха. Не оттого он не боялся, что он привык к огню (к опасности нельзя привыкнуть), но оттого, что он выучился управлять своей душой перед опасностью. Он привык, идя в дело, думать обо всем, исключая того, что, казалось, было бы интереснее всего другого, – о предстоящей опасности. Сколько он ни старался, ни упрекал себя в трусости первое время своей службы, он не мог этого достигнуть; но с годами теперь это сделалось само собою. Он ехал теперь рядом с Ильиным между березами, изредка отрывая листья с веток, которые попадались под руку, иногда дотрогиваясь ногой до паха лошади, иногда отдавая, не поворачиваясь, докуренную трубку ехавшему сзади гусару, с таким спокойным и беззаботным видом, как будто он ехал кататься. Ему жалко было смотреть на взволнованное лицо Ильина, много и беспокойно говорившего; он по опыту знал то мучительное состояние ожидания страха и смерти, в котором находился корнет, и знал, что ничто, кроме времени, не поможет ему.