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 |
“Java”, такие, как JavaFX, и есть несвободные пакеты Java, |
40 |
которые вы, возможно, сочли бы заманчивыми, но должны отвергать. Так что |
41 |
проверяйте лицензии всех пакетов, какими только вы планируете |
42 |
воспользоваться. Если вы пользуетесь Swing, убедитесь, вы пользуетесь |
43 |
свободной версией — той, что входит в состав 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 года</p> |
56 |
|
57 |
<p> |
58 |
Если ваша программа свободна, она в основном этична — но есть |
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 |
Может ли программа применяться в мире свободы — применяться |
78 |
людьми, которые намерены жить свободно,— более сложный вопрос. Это |
79 |
определяется не только собственной лицензией программы, потому что никакая |
80 |
программа не работает изолированно. Всякая программа зависит от других |
81 |
программ. Например, программу нужно скомпилировать или интерпретировать, так |
82 |
что она зависит от компилятора или интерпретатора. Если она компилируется в |
83 |
промежуточный псевдокод, то она зависит от интерпретатора псевдокода. Более |
84 |
того, чтобы выполняться, ей нужны библиотеки, и она может вызывать другие |
85 |
самостоятельные программы, которые выполняются в других процессах. Все эти |
86 |
программы — зависимости. Зависимости могут быть необходимы для |
87 |
того, чтобы программа могла хоть как-то выполняться, или только для доступа |
88 |
к определенным возможностям. Как бы то ни было, вся программа или ее часть |
89 |
не может функционировать без зависимостей. |
90 |
</p> |
91 |
|
92 |
<p> |
93 |
Если какая-то из зависимостей программы несвободна, это значит, что вся или |
94 |
часть программы не сможет выполняться в полностью свободной |
95 |
системе — ее нельзя использовать в мире свободы. Разумеется, мы |
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 |
проблемы — Java, потому что люди, которые пишут свободные |
112 |
программы, часто испытывают влечение к Java. Ослепленные притягательностью |
113 |
языка, они закрывают глаза на проблему зависимостей и попадают в западню |
114 |
Java. |
115 |
</p> |
116 |
|
117 |
<p> |
118 |
Реализация Java компании Sun несвободна. Стандартные библиотеки Java тоже |
119 |
несвободны. Свободные реализации Java у нас есть — такие, как <a |
120 |
href="http://gcc.gnu.org/java/">компилятор GNU языка Java</a> (GCJ) и <a |
121 |
href="/software/classpath">GNU Classpath</a>,— но они поддерживают еще |
122 |
не все возможности. Мы пока только догоняем. |
123 |
</p> |
124 |
|
125 |
<p> |
126 |
Если вы разрабатываете программу на Java с помощью платформы Java компании |
127 |
Sun, вы, скорее всего, будете пользоваться возможностями, доступными только |
128 |
для платформы Sun, даже не замечая этого. К тому времени, как вы обнаружите |
129 |
это, вы, возможно, будете пользоваться ими уже многие месяцы, и на переделку |
130 |
тоже уйдут месяцы. Может оказаться, что вы скажете: “Это слишком |
131 |
большая работа, чтобы начинать ее заново”. Тогда ваша программа |
132 |
провалится в западню Java; ею нельзя будет пользоваться в мире свободы. |
133 |
</p> |
134 |
|
135 |
<p> |
136 |
Надежный способ избежать западни Java — устанавливать в своей |
137 |
системе только свободную реализацию Java. Тогда, если вы воспользуетесь |
138 |
особенностью языка или библиотеки, которую свободные программы пока не |
139 |
поддерживают, вы сразу же это обнаружите, и вы сможете немедленно переписать |
140 |
эту часть программы. |
141 |
</p> |
142 |
|
143 |
<p> |
144 |
Sun продолжает разрабатывать дополнительные “стандартные” |
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 |
цель — самодостаточная операционная система GNU — |
178 |
содержала свободные замены всех этих зависимостей; если бы мы достигли цели, |
179 |
все наши программы были бы спасены. Так и случилось: благодаря системе |
180 |
GNU/Linux сейчас мы можем выполнять эти программы на свободных платформах. |
181 |
</p> |
182 |
|
183 |
<p> |
184 |
Сегодня ситуация другая. Теперь у нас есть мощные свободные операционные |
185 |
системы и большое количество свободных средств разработки. Какую бы работу |
186 |
вы ни хотели выполнить, вы можете делать это на свободной платформе; нет |
187 |
необходимости соглашаться даже на временную несвободную зависимость. Главная |
188 |
причина, по которой люди попадают сегодня в западню — то, что они |
189 |
не думают об этом. Проще всего эту проблему решить, приучая людей ее |
190 |
распознавать и не попадать в нее. |
191 |
</p> |
192 |
|
193 |
<p> |
194 |
Чтобы предохранить ваши программы на Java от этой западни, установите |
195 |
свободную среду разработки Java и пользуйтесь ею. Вообще, каким бы языком вы |
196 |
ни пользовались, смотрите в оба и проверяйте, свободны ли пакеты, от которых |
197 |
зависят ваши программы. Самый простой способ проверить, является ли |
198 |
программа свободной — поискать ее в Каталоге свободных программ |
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"><gnu@gnu.org></a>. Есть также <a |
236 |
href="/contact/">другие способы связаться</a> с фондом. Отчеты о |
237 |
неработающих ссылках и другие поправки или предложения можно присылать по |
238 |
адресу <a href="mailto:webmasters@gnu.org"><webmasters@gnu.org></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 |
<web-translators@gnu.org></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"><web-translators@gnu.org></a>. |
259 |
</p><p>Сведения по координации и предложениям переводов наших статей см. в |
260 |
<a href="/server/standards/README.translations.html">“Руководстве по |
261 |
переводам”</a>.</p> |
262 |
</div> |
263 |
|
264 |
<p>Copyright © 2004, 2010 Richard Stallman</p><p>Copyright © 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>Атрибуция — Без |
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> |