/[www]/www/philosophy/java-trap.ru.html
ViewVC logotype

Contents of /www/philosophy/java-trap.ru.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.29 - (show annotations) (download) (as text)
Fri Oct 1 17:39:49 2021 UTC (2 years, 11 months ago) by gnun
Branch: MAIN
CVS Tags: HEAD
Changes since 1.28: +17 -1 lines
File MIME type: text/html
Automatic update by GNUnited Nations.

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:02:54 $
315
316 <!-- timestamp end -->
317 </p>
318 </div>
319 </div>
320 <!-- for class="inner", starts in the banner include -->
321 </body>
322 </html>

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26