diff options
Diffstat (limited to 'talermerchantdemos/blog/articles/ru/java-trap.html')
-rw-r--r-- | talermerchantdemos/blog/articles/ru/java-trap.html | 297 |
1 files changed, 297 insertions, 0 deletions
diff --git a/talermerchantdemos/blog/articles/ru/java-trap.html b/talermerchantdemos/blog/articles/ru/java-trap.html new file mode 100644 index 0000000..886ea30 --- /dev/null +++ b/talermerchantdemos/blog/articles/ru/java-trap.html @@ -0,0 +1,297 @@ +<!--#set var="ENGLISH_PAGE" value="/philosophy/java-trap.en.html" --> + +<!--#include virtual="/server/header.ru.html" --> +<!-- Parent-Version: 1.77 --> + +<!-- This file is automatically generated by GNUnited Nations! --> +<title>Свободны, но в кандалах — Западня Java - Проект GNU - Фонд свободного +программного обеспечения</title> + +<!--#include virtual="/philosophy/po/java-trap.translist" --> +<!--#include virtual="/server/banner.ru.html" --> +<h2>Свободны, но в кандалах — Западня Java</h2> + +<p><a href="http://www.stallman.org/">Ричард Столмен</a></p> + + +<div class="announcement"><blockquote><h3>Вводное замечание</h3> +<p>С тех пор, как была написана эта статья, компания Sun (ныне филиал Oracle) +<a +href="http://www.fsf.org/news/fsf-welcomes-gpl-java.html">перевыпустила</a> +почти всю свою эталонную реализацию платформы Java под Стандартной +общественной лицензией GNU, и свободная среда разработки для Java теперь +есть. Таким образом, язык Java как таковой больше не западня.</p> + +<p>Однако вы должны быть осторожны, поскольку не всякая платформа Java +свободна. Sun продолжает распространять в исполняемом виде платформу Java, +которая не свободна, и другие компании тоже так поступают.</p> + +<p>Свободная среда для Java называется IcedTea; она включает в себя исходный +текст, освобожденный компанией Sun. Так что это та реализация, которой вам +следует пользоваться. Многие дистрибутивы GNU/Linux поставляются с IcedTea, +но некоторые включают в себя несвободные платформы Java. (Добавлено в +октябре 2015 года: свободная реализация Java во многих дистрибутивах +GNU/Linux известна как OpenJDK.)</p> + +<p>Чтобы надежно гарантировать, что ваши программы на Java будут прекрасно +выполняться в свободной среде, вам нужно разрабатывать их с помощью +IcedTea. Теоретически платформы Java должны быть совместимы, но они +совместимы не на сто процентов.</p> + +<p>Кроме того, есть несвободные программы, в названии которых есть слово +“Java”, такие, как JavaFX, и есть несвободные пакеты Java, +которые вы, возможно, сочли бы заманчивыми, но должны отвергать. Так что +проверяйте лицензии всех пакетов, какими только вы планируете +воспользоваться. Если вы пользуетесь Swing, убедитесь, вы пользуетесь +свободной версией — той, что входит в состав IcedTea. (Добавлено +в октябре 2015 года: была выпущена свободная замена JavaFX под +названием OpenFX.)</p> + +<p>Не считая этих деталей, связанных с Java, общая проблема, описанная здесь, +остается важной, потому что несвободная библиотека или платформа +программирования может создать подобную же проблему. Из истории Java мы +должны извлечь урок, чтобы в будущем избежать других ловушек.</p> + +<p>См. также <a href="/philosophy/javascript-trap.html"> Западня +JavaScript</a>.</p> +</blockquote> +</div> + +<p>12 апреля 2004 года</p> + +<p> + Если ваша программа свободна, она в основном этична — но есть +западня, которой вы должны остерегаться. Ваша программа, даже если она сама +по себе свободна, может быть ограничена несвободными программами, от которых +она зависит. Поскольку наиболее ярко эта проблема выражена сегодня для +программ на Java, мы называем это западней Java. +</p> + +<p> + Программа свободна, если у ее пользователей есть определенные жизненно +важные свободы. Грубо говоря, это свобода выполнять программу, свобода +изучать и править исходный текст, свобода перераспространять исходный текст +и двоичные файлы, а также свобода публиковать улучшенные версии. (См. <a +href="/philosophy/free-sw.html"> +http://www.gnu.org/philosophy/free-sw.html</a>.) Является ли данная +программа в виде исходного текста свободной, полностью определяется смыслом +ее лицензии. +</p> + +<p> + Может ли программа применяться в мире свободы — применяться +людьми, которые намерены жить свободно,— более сложный вопрос. Это +определяется не только собственной лицензией программы, потому что никакая +программа не работает изолированно. Всякая программа зависит от других +программ. Например, программу нужно скомпилировать или интерпретировать, так +что она зависит от компилятора или интерпретатора. Если она компилируется в +промежуточный псевдокод, то она зависит от интерпретатора псевдокода. Более +того, чтобы выполняться, ей нужны библиотеки, и она может вызывать другие +самостоятельные программы, которые выполняются в других процессах. Все эти +программы — зависимости. Зависимости могут быть необходимы для +того, чтобы программа могла хоть как-то выполняться, или только для доступа +к определенным возможностям. Как бы то ни было, вся программа или ее часть +не может функционировать без зависимостей. +</p> + +<p> + Если какая-то из зависимостей программы несвободна, это значит, что вся или +часть программы не сможет выполняться в полностью свободной +системе — ее нельзя использовать в мире свободы. Разумеется, мы +могли бы перераспространять эту программу и копировать ее на свои машины, но +пользы от этого не много, потому что она не станет работать. Эта программа +свободна, но фактически она скована несвободными зависимостями. +</p> + +<p> + Эта проблема может возникнуть в программах любого рода, на любом +языке. Например, свободная программа, которая выполняется только под +Microsoft Windows, явно бесполезна для мира свободы. Но программа, которая +выполняется под GNU/Linux, тоже может быть бесполезна, если она зависит от +других несвободных программ. В прошлом Motif (до того, как у нас появился +Lesstif) и Qt (до того, как его разработчики сделали его свободным) были +серьезными источниками этой проблемы. Большинство видеоплат с трехмерной +графикой в полном объеме работают только с несвободными драйверами, что тоже +создает эту проблему. Но сегодня серьезнейший источник этой +проблемы — Java, потому что люди, которые пишут свободные +программы, часто испытывают влечение к Java. Ослепленные притягательностью +языка, они закрывают глаза на проблему зависимостей и попадают в западню +Java. +</p> + +<p> + Реализация Java компании Sun несвободна. Стандартные библиотеки Java тоже +несвободны. Свободные реализации Java у нас есть — такие, как <a +href="http://gcc.gnu.org/java/">компилятор GNU языка Java</a> (GCJ) и <a +href="/software/classpath">GNU Classpath</a>,— но они поддерживают еще +не все возможности. Мы пока только догоняем. +</p> + +<p> + Если вы разрабатываете программу на Java с помощью платформы Java компании +Sun, вы, скорее всего, будете пользоваться возможностями, доступными только +для платформы Sun, даже не замечая этого. К тому времени, как вы обнаружите +это, вы, возможно, будете пользоваться ими уже многие месяцы, и на переделку +тоже уйдут месяцы. Может оказаться, что вы скажете: “Это слишком +большая работа, чтобы начинать ее заново”. Тогда ваша программа +провалится в западню Java; ею нельзя будет пользоваться в мире свободы. +</p> + +<p> + Надежный способ избежать западни Java — устанавливать в своей +системе только свободную реализацию Java. Тогда, если вы воспользуетесь +особенностью языка или библиотеки, которую свободные программы пока не +поддерживают, вы сразу же это обнаружите, и вы сможете немедленно переписать +эту часть программы. +</p> + +<p> + Sun продолжает разрабатывать дополнительные “стандартные” +библиотеки Java, и почти все они несвободны; во многих случаях даже +спецификации библиотеки являются коммерческой тайной, и последняя лицензия +Sun на эти спецификации запрещает выпуск чего бы то ни было, кроме полной +реализации спецификаций. (См., например, <a +href="http://jcp.org/aboutJava/communityprocess/JSPA2.pdf"> +http://jcp.org/aboutJava/communityprocess/JSPA2.pdf</a> и <a +href="http://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html"> +http://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html</a>.) +</p> + +<p> + К счастью, эта лицензия на спецификации все-таки позволяет выпускать +реализацию в качестве пакета свободных программ; другим, тем, кто получит +библиотеку, можно позволить изменять ее, и от них не требуется следовать +спецификации. Но это требование фактически запрещает применять схемы +сотрудничества для выработки свободной реализации. Применение такой схемы +подразумевало бы публикацию неполных версий, а это не позволено тем, кто +прочел спецификации. +</p> + +<p> + На заре движения за свободное программное обеспечение было невозможно +избежать зависимости от несвободных программ. До того, как у нас появился +компилятор Си GNU, каждая программа на Си (свободная или нет) зависела от +несвободного компилятора Си. До того, как у нас появилась библиотека Си GNU, +каждая программа зависела от несвободной библиотеки Си. До появления у нас +Linux, первого свободного ядра, каждая программа зависела от несвободного +ядра. До того, как у нас появился BASH, каждую программу для командного +интерпретатора приходилось выполнять в несвободном командном +интерпретаторе. Наши первые программы изначально были опутаны этими +зависимостями, это было неизбежно; но мы пошли на это, потому что в наши +планы входило последующее избавление наших программ. Наша высшая +цель — самодостаточная операционная система GNU — +содержала свободные замены всех этих зависимостей; если бы мы достигли цели, +все наши программы были бы спасены. Так и случилось: благодаря системе +GNU/Linux сейчас мы можем выполнять эти программы на свободных платформах. +</p> + +<p> + Сегодня ситуация другая. Теперь у нас есть мощные свободные операционные +системы и большое количество свободных средств разработки. Какую бы работу +вы ни хотели выполнить, вы можете делать это на свободной платформе; нет +необходимости соглашаться даже на временную несвободную зависимость. Главная +причина, по которой люди попадают сегодня в западню — то, что они +не думают об этом. Проще всего эту проблему решить, приучая людей ее +распознавать и не попадать в нее. +</p> + +<p> + Чтобы предохранить ваши программы на Java от этой западни, установите +свободную среду разработки Java и пользуйтесь ею. Вообще, каким бы языком вы +ни пользовались, смотрите в оба и проверяйте, свободны ли пакеты, от которых +зависят ваши программы. Самый простой способ проверить, является ли +программа свободной — поискать ее в Каталоге свободных программ +(<a +href="http://www.fsf.org/directory">http://www.fsf.org/directory</a>). Если +программы в каталоге нет, можно проверить, перечислены ли ее лицензии в +списке лицензий свободных программ (<a href="/licenses/license-list.html"> +http://www.gnu.org/licenses/license-list.html</a>). +</p> + +<p> + Мы пытаемся спасти завязнувшие программы на Java, так что если вам нравится +этот язык, мы приглашаем вас помочь в разработке GNU Classpath. Если вы +испытаете свои программы с компилятором GCJ и GNU Classpath и расскажете о +любых проблемах, с которыми вы столкнетесь в уже реализованных классах, это +тоже будет полезно. Однако до конца разработки GNU Classpath пройдет +какое-то время; если несвободные библиотеки будут по-прежнему добавляться, у +нас, может быть, никогда не будет самых последних из них. Так что не +сажайте, пожалуйста, свои свободные программы в кандалы. Когда сегодня вы +будете писать прикладную программу, пишите ее так, чтобы она с самого начала +выполнялась на свободных средствах. +</p> + +<h3>См. также:</h3> +<p><a href="/philosophy/sun-in-night-time.html">Забавный инцидент с солнцем в +ночную пору</a></p> + +<div class="translators-notes"> + +<!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.--> + </div> +</div> + +<!-- for id="content", starts in the include above --> +<!--#include virtual="/server/footer.ru.html" --> +<div id="footer"> +<div class="unprintable"> + +<p>Пожалуйста, присылайте общие запросы фонду и GNU по адресу <a +href="mailto:gnu@gnu.org"><gnu@gnu.org></a>. Есть также <a +href="/contact/">другие способы связаться</a> с фондом. Отчеты о +неработающих ссылках и другие поправки или предложения можно присылать по +адресу <a href="mailto:webmasters@gnu.org"><webmasters@gnu.org></a>.</p> + +<p> +<!-- TRANSLATORS: Ignore the original text in this paragraph, + replace it with the translation of these two: + + We work hard and do our best to provide accurate, good quality + translations. However, we are not exempt from imperfection. + Please send your comments and general suggestions in this regard + to <a href="mailto:web-translators@gnu.org"> + + <web-translators@gnu.org></a>.</p> + + <p>For information on coordinating and submitting translations of + our web pages, see <a + href="/server/standards/README.translations.html">Translations + README</a>. --> +Мы старались сделать этот перевод точным и качественным, но исключить +возможность ошибки мы не можем. Присылайте, пожалуйста, свои замечания и +предложения по переводу по адресу <a +href="mailto:web-translators@gnu.org"><web-translators@gnu.org></a>. +</p><p>Сведения по координации и предложениям переводов наших статей см. в +<a href="/server/standards/README.translations.html">“Руководстве по +переводам”</a>.</p> +</div> + +<p>Copyright © 2004, 2010, 2015 Richard Stallman</p><p>Copyright © +2012, 2013, 2015 Free Software Foundation, Inc. (translation)</p> + +<p>Это произведение доступно по <a rel="license" +href="http://creativecommons.org/licenses/by-nd/4.0/deed.ru">лицензии +Creative Commons Attribution-NoDerivs (<em>Атрибуция — Без +производных произведений</em>) 4.0 Всемирная</a>.</p> + +<!--#include virtual="/server/bottom-notes.ru.html" --> +<div class="translators-credits"> + +<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.--> +<em>Внимание! В подготовке этого перевода участвовал только один человек. Вы +можете существенно улучшить перевод, если проверите его и расскажете о +найденных ошибках в <a +href="http://savannah.gnu.org/projects/www-ru">русской группе переводов +gnu.org</a>.</em></div> + +<p class="unprintable"><!-- timestamp start --> +Обновлено: + +$Date: 2015/10/03 17:28:16 $ + +<!-- timestamp end --> +</p> +</div> +</div> +</body> +</html> |