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: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> |