java-trap.html (23758B)
1 <!--#set var="ENGLISH_PAGE" value="/philosophy/java-trap.en.html" --> 2 3 <!--#include virtual="/server/header.ru.html" --> 4 <!-- Parent-Version: 1.96 --> 5 <!-- This page is derived from /server/standards/boilerplate.html --> 6 <!--#set var="TAGS" value="essays licensing traps" --> 7 <!--#set var="DISABLE_TOP_ADDENDUM" value="yes" --> 8 9 <!-- This file is automatically generated by GNUnited Nations! --> 10 <title>Свободны, но в кандалах — Западня Java - Проект GNU - Фонд свободного 11 программного обеспечения</title> 12 13 <!--#include virtual="/philosophy/po/java-trap.translist" --> 14 <!--#include virtual="/server/banner.ru.html" --> 15 <!--#include virtual="/philosophy/ph-breadcrumb.ru.html" --> 16 <!--GNUN: OUT-OF-DATE NOTICE--> 17 <!--#include virtual="/server/top-addendum.ru.html" --> 18 <div class="article reduced-width"> 19 20 <h2>Свободны, но в кандалах — Западня Java</h2> 21 22 <address class="byline"><a href="https://www.stallman.org/">Ричард Столмен</a></address> 23 24 <div class="emph-box" style="background: none"> 25 <h3 class="footnote">Вводное замечание</h3> 26 <p>С тех пор, как была написана эта статья, компания Sun (ныне филиал Oracle) 27 <a 28 href="https://www.fsf.org/news/fsf-welcomes-gpl-java.html">перевыпустила</a> 29 почти всю свою эталонную реализацию платформы Java под Стандартной 30 общественной лицензией GNU, и свободная среда разработки для Java теперь 31 есть. Таким образом, язык Java как таковой больше не западня.</p> 32 33 <p>Однако вы должны быть осторожны, поскольку не всякая платформа Java 34 свободна. Sun продолжает распространять в исполняемом виде платформу Java, 35 которая не свободна, и другие компании тоже так поступают.</p> 36 37 <p>Свободная среда для Java называется IcedTea; она включает в себя исходный 38 текст, освобожденный компанией Sun. Так что это та реализация, которой вам 39 следует пользоваться. Многие дистрибутивы GNU/Linux поставляются с IcedTea, 40 но некоторые включают в себя несвободные платформы Java. (Добавлено в 41 октябре 2015 года: свободная реализация Java во многих дистрибутивах 42 GNU/Linux известна как OpenJDK.)</p> 43 44 <p>Чтобы надежно гарантировать, что ваши программы на Java будут прекрасно 45 выполняться в свободной среде, вам нужно разрабатывать их с помощью 46 IcedTea. Теоретически платформы Java должны быть совместимы, но они 47 совместимы не на сто процентов.</p> 48 49 <p>Кроме того, есть несвободные программы, в названии которых есть слово 50 “Java”, такие, как JavaFX, и есть несвободные пакеты Java, 51 которые вы, возможно, сочли бы заманчивыми, но должны отвергать. Так что 52 проверяйте лицензии всех пакетов, какими только вы планируете 53 воспользоваться. Если вы пользуетесь Swing, убедитесь, вы пользуетесь 54 свободной версией — той, что входит в состав IcedTea. (Добавлено 55 в октябре 2015 года: была выпущена свободная замена JavaFX под 56 названием OpenFX.)</p> 57 58 <p>Не считая этих деталей, связанных с Java, общая проблема, описанная здесь, 59 остается важной, потому что несвободная библиотека или платформа 60 программирования может создать подобную же проблему. Из истории Java мы 61 должны извлечь урок, чтобы в будущем избежать других ловушек.</p> 62 63 <p>См. также <a href="/philosophy/javascript-trap.html"> Западня 64 JavaScript</a>.</p> 65 </div> 66 <hr class="no-display" /> 67 68 <p><em>12 апреля 2004 года</em></p> 69 70 <p> 71 Если ваша программа свободна, она в основном этична — но есть 72 западня, которой вы должны остерегаться. Ваша программа, даже если она сама 73 по себе свободна, может быть ограничена несвободными программами, от которых 74 она зависит. Поскольку наиболее ярко эта проблема выражена сегодня для 75 программ на Java, мы называем это западней Java. 76 </p> 77 78 <p> 79 Программа свободна, если у ее пользователей есть определенные жизненно 80 важные свободы. Грубо говоря, это свобода выполнять программу, свобода 81 изучать и править исходный текст, свобода перераспространять исходный текст 82 и двоичные файлы, а также свобода публиковать улучшенные версии. (См. <a 83 href="/philosophy/free-sw.html">определение свободной программы</a>.) 84 Является ли данная программа в виде исходного текста свободной, полностью 85 определяется смыслом ее лицензии. 86 </p> 87 88 <p> 89 Может ли программа применяться в мире свободы — применяться 90 людьми, которые намерены жить свободно,— более сложный вопрос. Это 91 определяется не только собственной лицензией программы, потому что никакая 92 программа не работает изолированно. Всякая программа зависит от других 93 программ. Например, программу нужно скомпилировать или интерпретировать, так 94 что она зависит от компилятора или интерпретатора. Если она компилируется в 95 промежуточный псевдокод, то она зависит от интерпретатора псевдокода. Более 96 того, чтобы выполняться, ей нужны библиотеки, и она может вызывать другие 97 самостоятельные программы, которые выполняются в других процессах. Все эти 98 программы — зависимости. Зависимости могут быть необходимы для 99 того, чтобы программа могла хоть как-то выполняться, или только для доступа 100 к определенным возможностям. Как бы то ни было, вся программа или ее часть 101 не может функционировать без зависимостей. 102 </p> 103 104 <p> 105 Если какая-то из зависимостей программы несвободна, это значит, что вся или 106 часть программы не сможет выполняться в полностью свободной 107 системе — ее нельзя использовать в мире свободы. Разумеется, мы 108 могли бы перераспространять эту программу и копировать ее на свои машины, но 109 пользы от этого не много, потому что она не станет работать. Эта программа 110 свободна, но фактически она скована несвободными зависимостями. 111 </p> 112 113 <p> 114 Эта проблема может возникнуть в программах любого рода, на любом 115 языке. Например, свободная программа, которая выполняется только под 116 Microsoft Windows, явно бесполезна для мира свободы. Но программа, которая 117 выполняется под GNU/Linux, тоже может быть бесполезна, если она зависит от 118 других несвободных программ. В прошлом Motif (до того, как у нас появился 119 Lesstif) и Qt (до того, как его разработчики сделали его свободным) были 120 серьезными источниками этой проблемы. Большинство видеоплат с трехмерной 121 графикой в полном объеме работают только с несвободными драйверами, что тоже 122 создает эту проблему. Но сегодня серьезнейший источник этой 123 проблемы — Java, потому что люди, которые пишут свободные 124 программы, часто испытывают влечение к Java. Ослепленные притягательностью 125 языка, они закрывают глаза на проблему зависимостей и попадают в западню 126 Java. 127 </p> 128 129 <p> 130 Реализация Java компании Sun несвободна. Стандартные библиотеки Java тоже 131 несвободны. Свободные реализации Java у нас есть — такие, как <a 132 href="https://objectcomputing.com/resources/publications/sett/january-2003-gcj-the-gnu-compiler-for-java">компилятор 133 GNU языка Java</a> (GCJ) и <a href="/software/classpath">GNU 134 Classpath</a>,— но они поддерживают еще не все возможности. Мы пока 135 только догоняем. 136 </p> 137 138 <p> 139 Если вы разрабатываете программу на Java с помощью платформы Java компании 140 Sun, вы, скорее всего, будете пользоваться возможностями, доступными только 141 для платформы Sun, даже не замечая этого. К тому времени, как вы обнаружите 142 это, вы, возможно, будете пользоваться ими уже многие месяцы, и на переделку 143 тоже уйдут месяцы. Может оказаться, что вы скажете: “Это слишком 144 большая работа, чтобы начинать ее заново”. Тогда ваша программа 145 провалится в западню Java; ею нельзя будет пользоваться в мире свободы. 146 </p> 147 148 <p> 149 Надежный способ избежать западни Java — устанавливать в своей 150 системе только свободную реализацию Java. Тогда, если вы воспользуетесь 151 особенностью языка или библиотеки, которую свободные программы пока не 152 поддерживают, вы сразу же это обнаружите, и вы сможете немедленно переписать 153 эту часть программы. 154 </p> 155 156 <p> 157 Sun продолжает разрабатывать дополнительные “стандартные” 158 библиотеки Java, и почти все они несвободны; во многих случаях даже 159 спецификации библиотеки являются коммерческой тайной, и последняя лицензия 160 Sun на эти спецификации запрещает выпуск чего бы то ни было, кроме полной 161 реализации спецификаций. (См., например, <a 162 href="https://jcp.org/aboutJava/communityprocess/JSPA2.pdf"> Соглашение об 163 участии в спецификации Java</a> и <a 164 href="http://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html"> 165 Спецификацию профиля персонального базиса J2ME™ </a>.) 166 </p> 167 168 <p> 169 К счастью, эта лицензия на спецификации все-таки позволяет выпускать 170 реализацию в качестве пакета свободных программ; другим, тем, кто получит 171 библиотеку, можно позволить изменять ее, и от них не требуется следовать 172 спецификации. Но это требование фактически запрещает применять схемы 173 сотрудничества для выработки свободной реализации. Применение такой схемы 174 подразумевало бы публикацию неполных версий, а это не позволено тем, кто 175 прочел спецификации. 176 </p> 177 178 <p> 179 На заре движения за свободное программное обеспечение было невозможно 180 избежать зависимости от несвободных программ. До того, как у нас появился 181 компилятор Си GNU, каждая программа на Си (свободная или нет) зависела от 182 несвободного компилятора Си. До того, как у нас появилась библиотека Си GNU, 183 каждая программа зависела от несвободной библиотеки Си. До появления у нас 184 Linux, первого свободного ядра, каждая программа зависела от несвободного 185 ядра. До того, как у нас появился BASH, каждую программу для командного 186 интерпретатора приходилось выполнять в несвободном командном 187 интерпретаторе. Наши первые программы изначально были опутаны этими 188 зависимостями, это было неизбежно; но мы пошли на это, потому что в наши 189 планы входило последующее избавление наших программ. Наша высшая 190 цель — самодостаточная операционная система GNU — 191 содержала свободные замены всех этих зависимостей; если бы мы достигли цели, 192 все наши программы были бы спасены. Так и случилось: благодаря системе 193 GNU/Linux сейчас мы можем выполнять эти программы на свободных платформах. 194 </p> 195 196 <p> 197 Сегодня ситуация другая. Теперь у нас есть мощные свободные операционные 198 системы и большое количество свободных средств разработки. Какую бы работу 199 вы ни хотели выполнить, вы можете делать это на свободной платформе; нет 200 необходимости соглашаться даже на временную несвободную зависимость. Главная 201 причина, по которой люди попадают сегодня в западню — то, что они 202 не думают об этом. Проще всего эту проблему решить, приучая людей ее 203 распознавать и не попадать в нее. 204 </p> 205 206 <p> 207 Чтобы предохранить ваши программы на Java от этой западни, установите 208 свободную среду разработки Java и пользуйтесь ею. Вообще, каким бы языком вы 209 ни пользовались, смотрите в оба и проверяйте, свободны ли пакеты, от которых 210 зависят ваши программы. Самый простой способ проверить, является ли 211 программа свободной — поискать ее в (<a 212 href="http://www.fsf.org/directory">Каталоге свободных программ</a>). Если 213 программы в каталоге нет, можно проверить, перечислены ли ее лицензии в 214 списке лицензий свободных программ (<a href="/licenses/license-list.html"> 215 списке лицензий свободных программ</a>). 216 </p> 217 218 <p> 219 Мы пытаемся спасти завязнувшие программы на Java, так что если вам нравится 220 этот язык, мы приглашаем вас помочь в разработке GNU Classpath. Если вы 221 испытаете свои программы с компилятором GCJ и GNU Classpath и расскажете о 222 любых проблемах, с которыми вы столкнетесь в уже реализованных классах, это 223 тоже будет полезно. Однако до конца разработки GNU Classpath пройдет 224 какое-то время; если несвободные библиотеки будут по-прежнему добавляться, у 225 нас, может быть, никогда не будет самых последних из них. Так что не 226 сажайте, пожалуйста, свои свободные программы в кандалы. Когда сегодня вы 227 будете писать прикладную программу, пишите ее так, чтобы она с самого начала 228 выполнялась на свободных средствах. 229 </p> 230 231 <h3 class="footnote">См. также:</h3> 232 <p><a href="/philosophy/sun-in-night-time.html">Забавный инцидент с солнцем в 233 ночную пору</a></p> 234 </div> 235 236 <div class="translators-notes"> 237 238 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.--> 239 </div> 240 </div> 241 242 <!-- for id="content", starts in the include above --> 243 <!--#include virtual="/server/footer.ru.html" --> 244 <div id="footer" role="contentinfo"> 245 <div class="unprintable"> 246 247 <p>Пожалуйста, присылайте общие запросы фонду и GNU по адресу <a 248 href="mailto:gnu@gnu.org"><gnu@gnu.org></a>. Есть также <a 249 href="/contact/">другие способы связаться</a> с фондом. Отчеты о 250 неработающих ссылках и другие поправки или предложения можно присылать по 251 адресу <a href="mailto:webmasters@gnu.org"><webmasters@gnu.org></a>.</p> 252 253 <p> 254 <!-- TRANSLATORS: Ignore the original text in this paragraph, 255 replace it with the translation of these two: 256 257 We work hard and do our best to provide accurate, good quality 258 translations. However, we are not exempt from imperfection. 259 Please send your comments and general suggestions in this regard 260 to <a href="mailto:web-translators@gnu.org"> 261 262 <web-translators@gnu.org></a>.</p> 263 264 <p>For information on coordinating and contributing translations of 265 our web pages, see <a 266 href="/server/standards/README.translations.html">Translations 267 README</a>. --> 268 Мы старались сделать этот перевод точным и качественным, но исключить 269 возможность ошибки мы не можем. Присылайте, пожалуйста, свои замечания и 270 предложения по переводу по адресу <a 271 href="mailto:web-translators@gnu.org"><web-translators@gnu.org></a>. 272 </p><p>Сведения по координации и предложениям переводов наших статей см. в 273 <a href="/server/standards/README.translations.html">“Руководстве по 274 переводам”</a>.</p> 275 </div> 276 277 <!-- Regarding copyright, in general, standalone pages (as opposed to 278 files generated as part of manuals) on the GNU web server should 279 be under CC BY-ND 4.0. Please do NOT change or remove this 280 without talking with the webmasters or licensing team first. 281 Please make sure the copyright date is consistent with the 282 document. For web pages, it is ok to list just the latest year the 283 document was modified, or published. 284 285 If you wish to list earlier years, that is ok too. 286 Either "2001, 2002, 2003" or "2001-2003" are ok for specifying 287 years, as long as each year in the range is in fact a copyrightable 288 year, i.e., a year in which the document was published (including 289 being publicly visible on the web or in a revision control system). 290 291 There is more detail about copyright years in the GNU Maintainers 292 Information document, www.gnu.org/prep/maintain. --> 293 <p>Copyright © 2004, 2010, 2015, 2021 Richard Stallman</p><p>Copyright 294 © 2012, 2013, 2015, 2021 Free Software Foundation, Inc. (translation)</p> 295 296 <p>Это произведение доступно по <a rel="license" 297 href="http://creativecommons.org/licenses/by-nd/4.0/deed.ru">лицензии 298 Creative Commons Attribution-NoDerivs (<em>Атрибуция — Без 299 производных произведений</em>) 4.0 Всемирная</a>.</p> 300 301 <!--#include virtual="/server/bottom-notes.ru.html" --> 302 <div class="translators-credits"> 303 304 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.--> 305 <em>Внимание! В подготовке этого перевода участвовал только один человек. Вы 306 можете существенно улучшить перевод, если проверите его и расскажете о 307 найденных ошибках в <a 308 href="http://savannah.gnu.org/projects/www-ru">русской группе переводов 309 gnu.org</a>.</em></div> 310 311 <p class="unprintable"><!-- timestamp start --> 312 Обновлено: 313 314 $Date: 2021/10/01 17:39:49 $ 315 316 <!-- timestamp end --> 317 </p> 318 </div> 319 </div> 320 <!-- for class="inner", starts in the banner include --> 321 </body> 322 </html>