taler-merchant-demos

Python-based Frontends for the Demonstration Web site
Log | Files | Refs | Submodules | README | LICENSE

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&nbsp;года: свободная реализация Java во многих дистрибутивах
     42 GNU/Linux известна как OpenJDK.)</p>
     43 
     44 <p>Чтобы надежно гарантировать, что ваши программы на Java будут прекрасно
     45 выполняться в свободной среде, вам нужно разрабатывать их с помощью
     46 IcedTea. Теоретически платформы Java должны быть совместимы, но они
     47 совместимы не на сто процентов.</p>
     48 
     49 <p>Кроме того, есть несвободные программы, в названии которых есть слово
     50 &ldquo;Java&rdquo;, такие, как JavaFX, и есть несвободные пакеты Java,
     51 которые вы, возможно, сочли бы заманчивыми, но должны отвергать. Так что
     52 проверяйте лицензии всех пакетов, какими только вы планируете
     53 воспользоваться. Если вы пользуетесь Swing, убедитесь, вы пользуетесь
     54 свободной версией&nbsp;&mdash; той, что входит в состав IcedTea. (Добавлено
     55 в октябре 2015&nbsp;года: была выпущена свободная замена 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&nbsp;года</em></p>
     69 
     70 <p>
     71   Если ваша программа свободна, она в основном этична&nbsp;&mdash; но есть
     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   Может ли программа применяться в мире свободы&nbsp;&mdash; применяться
     90 людьми, которые намерены жить свободно,&mdash; более сложный вопрос. Это
     91 определяется не только собственной лицензией программы, потому что никакая
     92 программа не работает изолированно. Всякая программа зависит от других
     93 программ. Например, программу нужно скомпилировать или интерпретировать, так
     94 что она зависит от компилятора или интерпретатора. Если она компилируется в
     95 промежуточный псевдокод, то она зависит от интерпретатора псевдокода. Более
     96 того, чтобы выполняться, ей нужны библиотеки, и она может вызывать другие
     97 самостоятельные программы, которые выполняются в других процессах. Все эти
     98 программы&nbsp;&mdash; зависимости. Зависимости могут быть необходимы для
     99 того, чтобы программа могла хоть как-то выполняться, или только для доступа
    100 к определенным возможностям. Как бы то ни было, вся программа или ее часть
    101 не может функционировать без зависимостей.
    102 </p>
    103 
    104 <p>
    105   Если какая-то из зависимостей программы несвободна, это значит, что вся или
    106 часть программы не сможет выполняться в полностью свободной
    107 системе&nbsp;&mdash; ее нельзя использовать в мире свободы. Разумеется, мы
    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 проблемы&nbsp;&mdash; Java, потому что люди, которые пишут свободные
    124 программы, часто испытывают влечение к Java. Ослепленные притягательностью
    125 языка, они закрывают глаза на проблему зависимостей и попадают в западню
    126 Java.
    127 </p>
    128 
    129 <p>
    130   Реализация Java компании Sun несвободна. Стандартные библиотеки Java тоже
    131 несвободны. Свободные реализации Java у нас есть&nbsp;&mdash; такие, как <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>,&mdash; но они поддерживают еще не все возможности. Мы пока
    135 только догоняем.
    136 </p>
    137 
    138 <p>
    139   Если вы разрабатываете программу на Java с помощью платформы Java компании
    140 Sun, вы, скорее всего, будете пользоваться возможностями, доступными только
    141 для платформы Sun, даже не замечая этого. К тому времени, как вы обнаружите
    142 это, вы, возможно, будете пользоваться ими уже многие месяцы, и на переделку
    143 тоже уйдут месяцы. Может оказаться, что вы скажете: &ldquo;Это слишком
    144 большая работа, чтобы начинать ее заново&rdquo;. Тогда ваша программа
    145 провалится в западню Java; ею нельзя будет пользоваться в мире свободы.
    146 </p>
    147 
    148 <p>
    149   Надежный способ избежать западни Java&nbsp;&mdash; устанавливать в своей
    150 системе только свободную реализацию Java. Тогда, если вы воспользуетесь
    151 особенностью языка или библиотеки, которую свободные программы пока не
    152 поддерживают, вы сразу же это обнаружите, и вы сможете немедленно переписать
    153 эту часть программы.
    154 </p>
    155 
    156 <p>
    157   Sun продолжает разрабатывать дополнительные &ldquo;стандартные&rdquo;
    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&trade; </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 цель&nbsp;&mdash; самодостаточная операционная система GNU&nbsp;&mdash;
    191 содержала свободные замены всех этих зависимостей; если бы мы достигли цели,
    192 все наши программы были бы спасены. Так и случилось: благодаря системе
    193 GNU/Linux сейчас мы можем выполнять эти программы на свободных платформах.
    194 </p>
    195 
    196 <p>
    197   Сегодня ситуация другая. Теперь у нас есть мощные свободные операционные
    198 системы и большое количество свободных средств разработки. Какую бы работу
    199 вы ни хотели выполнить, вы можете делать это на свободной платформе; нет
    200 необходимости соглашаться даже на временную несвободную зависимость. Главная
    201 причина, по которой люди попадают сегодня в западню&nbsp;&mdash; то, что они
    202 не думают об этом. Проще всего эту проблему решить, приучая людей ее
    203 распознавать и не попадать в нее.
    204 </p>
    205 
    206 <p>
    207   Чтобы предохранить ваши программы на Java от этой западни, установите
    208 свободную среду разработки Java и пользуйтесь ею. Вообще, каким бы языком вы
    209 ни пользовались, смотрите в оба и проверяйте, свободны ли пакеты, от которых
    210 зависят ваши программы. Самый простой способ проверить, является ли
    211 программа свободной&nbsp;&mdash; поискать ее в (<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">&lt;gnu@gnu.org&gt;</a>. Есть также <a
    249 href="/contact/">другие способы связаться</a> с фондом. Отчеты о
    250 неработающих ссылках и другие поправки или предложения можно присылать по
    251 адресу <a href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</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         &lt;web-translators@gnu.org&gt;</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">&lt;web-translators@gnu.org&gt;</a>.
    272 </p><p>Сведения по координации и предложениям переводов наших статей см. в
    273 <a href="/server/standards/README.translations.html">&ldquo;Руководстве по
    274 переводам&rdquo;</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 &copy; 2004, 2010, 2015, 2021 Richard Stallman</p><p>Copyright
    294 &copy; 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>Атрибуция&nbsp;&mdash; Без
    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>