/[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.24 - (show annotations) (download) (as text)
Thu May 21 07:18:04 2015 UTC (9 years, 5 months ago) by gnun
Branch: MAIN
Changes since 1.23: +1 -3 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.77 -->
5
6 <!-- This file is automatically generated by GNUnited Nations! -->
7 <title>Свободны, но в кандалах — Западня Java - Проект GNU - Фонд свободного
8 программного обеспечения</title>
9
10 <!--#include virtual="/philosophy/po/java-trap.translist" -->
11 <!--#include virtual="/server/banner.ru.html" -->
12 <h2>Свободны, но в кандалах — Западня Java</h2>
13
14 <p><a href="http://www.stallman.org/">Ричард Столмен</a></p>
15
16
17 <div class="announcement"><blockquote><h3>Вводное замечание</h3>
18 <p>С тех пор, как была написана эта статья, компания Sun <a
19 href="http://www.fsf.org/news/fsf-welcomes-gpl-java.html">перевыпустила</a>
20 почти всю свою эталонную реализацию платформы Java под Стандартной
21 общественной лицензией GNU, и свободная среда разработки для Java теперь
22 есть. Таким образом, язык Java как таковой больше не западня.</p>
23
24 <p>Однако вы должны быть осторожны, поскольку не всякая платформа Java
25 свободна. Sun продолжает распространять в исполняемом виде платформу Java,
26 которая не свободна, и другие компании тоже так поступают.</p>
27
28 <p>Свободная среда для Java называется IcedTea; она включает в себя исходный
29 текст, освобожденный компанией Sun. Так что это та реализация, которой вам
30 следует пользоваться. Многие дистрибутивы GNU/Linux поставляются с IcedTea,
31 но некоторые включают в себя несвободные платформы Java.</p>
32
33 <p>Чтобы надежно гарантировать, что ваши программы на Java будут прекрасно
34 выполняться в свободной среде, вам нужно разрабатывать их с помощью
35 IcedTea. Теоретически платформы Java должны быть совместимы, но они
36 совместимы не на сто процентов.</p>
37
38 <p>Кроме того, есть несвободные программы, в названии которых есть слово
39 &ldquo;Java&rdquo;, такие, как JavaFX, и есть несвободные пакеты Java,
40 которые вы, возможно, сочли бы заманчивыми, но должны отвергать. Так что
41 проверяйте лицензии всех пакетов, какими только вы планируете
42 воспользоваться. Если вы пользуетесь Swing, убедитесь, вы пользуетесь
43 свободной версией&nbsp;&mdash; той, что входит в состав IcedTea.</p>
44
45 <p>Не считая этих деталей, связанных с Java, общая проблема, описанная здесь,
46 остается важной, потому что несвободная библиотека или платформа
47 программирования может создать подобную же проблему. Из истории Java мы
48 должны извлечь урок, чтобы в будущем избежать других ловушек.</p>
49
50 <p>См. также <a href="/philosophy/javascript-trap.html"> Западня
51 JavaScript</a>.</p>
52 </blockquote>
53 </div>
54
55 <p>12 апреля 2004&nbsp;года</p>
56
57 <p>
58 Если ваша программа свободна, она в основном этична&nbsp;&mdash; но есть
59 западня, которой вы должны остерегаться. Ваша программа, даже если она сама
60 по себе свободна, может быть ограничена несвободными программами, от которых
61 она зависит. Поскольку наиболее ярко эта проблема выражена сегодня для
62 программ на Java, мы называем это западней Java.
63 </p>
64
65 <p>
66 Программа свободна, если у ее пользователей есть определенные жизненно
67 важные свободы. Грубо говоря, это свобода выполнять программу, свобода
68 изучать и править исходный текст, свобода перераспространять исходный текст
69 и двоичные файлы, а также свобода публиковать улучшенные версии. (См. <a
70 href="/philosophy/free-sw.html">
71 http://www.gnu.org/philosophy/free-sw.html</a>.) Является ли данная
72 программа в виде исходного текста свободной, полностью определяется смыслом
73 ее лицензии.
74 </p>
75
76 <p>
77 Может ли программа применяться в мире свободы&nbsp;&mdash; применяться
78 людьми, которые намерены жить свободно,&mdash; более сложный вопрос. Это
79 определяется не только собственной лицензией программы, потому что никакая
80 программа не работает изолированно. Всякая программа зависит от других
81 программ. Например, программу нужно скомпилировать или интерпретировать, так
82 что она зависит от компилятора или интерпретатора. Если она компилируется в
83 промежуточный псевдокод, то она зависит от интерпретатора псевдокода. Более
84 того, чтобы выполняться, ей нужны библиотеки, и она может вызывать другие
85 самостоятельные программы, которые выполняются в других процессах. Все эти
86 программы&nbsp;&mdash; зависимости. Зависимости могут быть необходимы для
87 того, чтобы программа могла хоть как-то выполняться, или только для доступа
88 к определенным возможностям. Как бы то ни было, вся программа или ее часть
89 не может функционировать без зависимостей.
90 </p>
91
92 <p>
93 Если какая-то из зависимостей программы несвободна, это значит, что вся или
94 часть программы не сможет выполняться в полностью свободной
95 системе&nbsp;&mdash; ее нельзя использовать в мире свободы. Разумеется, мы
96 могли бы перераспространять эту программу и копировать ее на свои машины, но
97 пользы от этого не много, потому что она не станет работать. Эта программа
98 свободна, но фактически она скована несвободными зависимостями.
99 </p>
100
101 <p>
102 Эта проблема может возникнуть в программах любого рода, на любом
103 языке. Например, свободная программа, которая выполняется только под
104 Microsoft Windows, явно бесполезна для мира свободы. Но программа, которая
105 выполняется под GNU/Linux, тоже может быть бесполезна, если она зависит от
106 других несвободных программ. В прошлом Motif (до того, как у нас появился
107 Lesstif) и Qt (до того, как его разработчики сделали его свободным) были
108 серьезными источниками этой проблемы. Большинство видеоплат с трехмерной
109 графикой в полном объеме работают только с несвободными драйверами, что тоже
110 создает эту проблему. Но сегодня серьезнейший источник этой
111 проблемы&nbsp;&mdash; Java, потому что люди, которые пишут свободные
112 программы, часто испытывают влечение к Java. Ослепленные притягательностью
113 языка, они закрывают глаза на проблему зависимостей и попадают в западню
114 Java.
115 </p>
116
117 <p>
118 Реализация Java компании Sun несвободна. Стандартные библиотеки Java тоже
119 несвободны. Свободные реализации Java у нас есть&nbsp;&mdash; такие, как <a
120 href="http://gcc.gnu.org/java/">компилятор GNU языка Java</a> (GCJ) и <a
121 href="/software/classpath">GNU Classpath</a>,&mdash; но они поддерживают еще
122 не все возможности. Мы пока только догоняем.
123 </p>
124
125 <p>
126 Если вы разрабатываете программу на Java с помощью платформы Java компании
127 Sun, вы, скорее всего, будете пользоваться возможностями, доступными только
128 для платформы Sun, даже не замечая этого. К тому времени, как вы обнаружите
129 это, вы, возможно, будете пользоваться ими уже многие месяцы, и на переделку
130 тоже уйдут месяцы. Может оказаться, что вы скажете: &ldquo;Это слишком
131 большая работа, чтобы начинать ее заново&rdquo;. Тогда ваша программа
132 провалится в западню Java; ею нельзя будет пользоваться в мире свободы.
133 </p>
134
135 <p>
136 Надежный способ избежать западни Java&nbsp;&mdash; устанавливать в своей
137 системе только свободную реализацию Java. Тогда, если вы воспользуетесь
138 особенностью языка или библиотеки, которую свободные программы пока не
139 поддерживают, вы сразу же это обнаружите, и вы сможете немедленно переписать
140 эту часть программы.
141 </p>
142
143 <p>
144 Sun продолжает разрабатывать дополнительные &ldquo;стандартные&rdquo;
145 библиотеки Java, и почти все они несвободны; во многих случаях даже
146 спецификации библиотеки являются коммерческой тайной, и последняя лицензия
147 Sun на эти спецификации запрещает выпуск чего бы то ни было, кроме полной
148 реализации спецификаций. (См., например, <a
149 href="http://jcp.org/aboutJava/communityprocess/JSPA2.pdf">
150 http://jcp.org/aboutJava/communityprocess/JSPA2.pdf</a> и <a
151 href="http://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html">
152 http://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html</a>.)
153 </p>
154
155 <p>
156 К счастью, эта лицензия на спецификации все-таки позволяет выпускать
157 реализацию в качестве пакета свободных программ; другим, тем, кто получит
158 библиотеку, можно позволить изменять ее, и от них не требуется следовать
159 спецификации. Но это требование фактически запрещает применять схемы
160 сотрудничества для выработки свободной реализации. Применение такой схемы
161 подразумевало бы публикацию неполных версий, а это не позволено тем, кто
162 прочел спецификации.
163 </p>
164
165 <p>
166 На заре движения за свободное программное обеспечение было невозможно
167 избежать зависимости от несвободных программ. До того, как у нас появился
168 компилятор Си GNU, каждая программа на Си (свободная или нет) зависела от
169 несвободного компилятора Си. До того, как у нас появилась библиотека Си GNU,
170 каждая программа зависела от несвободной библиотеки Си. До появления у нас
171 Linux, первого свободного ядра, каждая программа зависела от несвободного
172 ядра. До того, как у нас появился BASH, каждую программу для командного
173 интерпретатора приходилось выполнять в несвободном командном
174 интерпретаторе. Наши первые программы изначально были опутаны этими
175 зависимостями, это было неизбежно; но мы пошли на это, потому что в наши
176 планы входило последующее избавление наших программ. Наша высшая
177 цель&nbsp;&mdash; самодостаточная операционная система GNU&nbsp;&mdash;
178 содержала свободные замены всех этих зависимостей; если бы мы достигли цели,
179 все наши программы были бы спасены. Так и случилось: благодаря системе
180 GNU/Linux сейчас мы можем выполнять эти программы на свободных платформах.
181 </p>
182
183 <p>
184 Сегодня ситуация другая. Теперь у нас есть мощные свободные операционные
185 системы и большое количество свободных средств разработки. Какую бы работу
186 вы ни хотели выполнить, вы можете делать это на свободной платформе; нет
187 необходимости соглашаться даже на временную несвободную зависимость. Главная
188 причина, по которой люди попадают сегодня в западню&nbsp;&mdash; то, что они
189 не думают об этом. Проще всего эту проблему решить, приучая людей ее
190 распознавать и не попадать в нее.
191 </p>
192
193 <p>
194 Чтобы предохранить ваши программы на Java от этой западни, установите
195 свободную среду разработки Java и пользуйтесь ею. Вообще, каким бы языком вы
196 ни пользовались, смотрите в оба и проверяйте, свободны ли пакеты, от которых
197 зависят ваши программы. Самый простой способ проверить, является ли
198 программа свободной&nbsp;&mdash; поискать ее в Каталоге свободных программ
199 (<a
200 href="http://www.fsf.org/directory">http://www.fsf.org/directory</a>). Если
201 программы в каталоге нет, можно проверить, перечислены ли ее лицензии в
202 списке лицензий свободных программ (<a href="/licenses/license-list.html">
203 http://www.gnu.org/licenses/license-list.html</a>).
204 </p>
205
206 <p>
207 Мы пытаемся спасти завязнувшие программы на Java, так что если вам нравится
208 этот язык, мы приглашаем вас помочь в разработке GNU Classpath. Если вы
209 испытаете свои программы с компилятором GCJ и GNU Classpath и расскажете о
210 любых проблемах, с которыми вы столкнетесь в уже реализованных классах, это
211 тоже будет полезно. Однако до конца разработки GNU Classpath пройдет
212 какое-то время; если несвободные библиотеки будут по-прежнему добавляться, у
213 нас, может быть, никогда не будет самых последних из них. Так что не
214 сажайте, пожалуйста, свои свободные программы в кандалы. Когда сегодня вы
215 будете писать прикладную программу, пишите ее так, чтобы она с самого начала
216 выполнялась на свободных средствах.
217 </p>
218
219 <h3>См. также:</h3>
220 <p><a href="/philosophy/sun-in-night-time.html">Забавный инцидент с солнцем в
221 ночную пору</a></p>
222
223 <div class="translators-notes">
224
225 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->
226 </div>
227 </div>
228
229 <!-- for id="content", starts in the include above -->
230 <!--#include virtual="/server/footer.ru.html" -->
231 <div id="footer">
232 <div class="unprintable">
233
234 <p>Пожалуйста, присылайте общие запросы фонду и GNU по адресу <a
235 href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>. Есть также <a
236 href="/contact/">другие способы связаться</a> с фондом. Отчеты о
237 неработающих ссылках и другие поправки или предложения можно присылать по
238 адресу <a href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>
239
240 <p>
241 <!-- TRANSLATORS: Ignore the original text in this paragraph,
242 replace it with the translation of these two:
243
244 We work hard and do our best to provide accurate, good quality
245 translations. However, we are not exempt from imperfection.
246 Please send your comments and general suggestions in this regard
247 to <a href="mailto:web-translators@gnu.org">
248
249 &lt;web-translators@gnu.org&gt;</a>.</p>
250
251 <p>For information on coordinating and submitting translations of
252 our web pages, see <a
253 href="/server/standards/README.translations.html">Translations
254 README</a>. -->
255 Мы старались сделать этот перевод точным и качественным, но исключить
256 возможность ошибки мы не можем. Присылайте, пожалуйста, свои замечания и
257 предложения по переводу по адресу <a
258 href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>.
259 </p><p>Сведения по координации и предложениям переводов наших статей см. в
260 <a href="/server/standards/README.translations.html">&ldquo;Руководстве по
261 переводам&rdquo;</a>.</p>
262 </div>
263
264 <p>Copyright &copy; 2004, 2010 Richard Stallman</p><p>Copyright &copy; 2012,
265 2013 Free Software Foundation, Inc. (translation)</p>
266
267 <p>Это произведение доступно по <a rel="license"
268 href="http://creativecommons.org/licenses/by-nd/3.0/us/deed.ru">лицензии
269 Creative Commons Attribution-NoDerivs (<em>Атрибуция&nbsp;&mdash; Без
270 производных произведений</em>) 3.0 США</a>.</p>
271
272 <!--#include virtual="/server/bottom-notes.ru.html" -->
273 <div class="translators-credits">
274
275 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
276 <em>Внимание! В подготовке этого перевода участвовал только один человек. Вы
277 можете существенно улучшить перевод, если проверите его и расскажете о
278 найденных ошибках в <a
279 href="http://savannah.gnu.org/projects/www-ru">русской группе переводов
280 gnu.org</a>.</em></div>
281
282 <p class="unprintable"><!-- timestamp start -->
283 Обновлено:
284
285 $Date: 2014/04/12 12:40:11 $
286
287 <!-- timestamp end -->
288 </p>
289 </div>
290 </div>
291 </body>
292 </html>

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