1 |
th_g |
1.29 |
<!--#set var="PO_FILE" |
2 |
|
|
value='<a href="/philosophy/po/java-trap.bg.po"> |
3 |
th_g |
1.30 |
https://www.gnu.org/philosophy/po/java-trap.bg.po</a>' |
4 |
th_g |
1.29 |
--><!--#set var="ORIGINAL_FILE" value="/philosophy/java-trap.html" |
5 |
|
|
--><!--#set var="DIFF_FILE" value="" |
6 |
th_g |
1.30 |
--><!--#set var="OUTDATED_SINCE" value="2010-04-04" --> |
7 |
yavor |
1.13 |
|
8 |
yavor |
1.5 |
<!--#include virtual="/server/header.bg.html" --> |
9 |
th_g |
1.29 |
<!-- Parent-Version: 1.77 --> |
10 |
yavor |
1.10 |
|
11 |
|
|
<!-- This file is automatically generated by GNUnited Nations! --> |
12 |
th_g |
1.29 |
<title>Свободен, но в окови - „клопката на Джава“ - Проектът GNU - Фондация за |
13 |
|
|
свободен софтуер</title> |
14 |
yavor |
1.13 |
|
15 |
th_g |
1.28 |
<!--#include virtual="/philosophy/po/java-trap.translist" --> |
16 |
yavor |
1.5 |
<!--#include virtual="/server/banner.bg.html" --> |
17 |
th_g |
1.29 |
<!--#include virtual="/server/outdated.bg.html" --> |
18 |
ineiev |
1.27 |
<h2>Свободен, но в окови – „клопката на Джава“</h2> |
19 |
yavor |
1.1 |
|
20 |
yavor |
1.5 |
<p>от <a href="http://www.stallman.org/">Ричард Столман</a></p> |
21 |
yavor |
1.1 |
|
22 |
th_g |
1.29 |
<div class="announcement"><blockquote><h3>Встъпителна бележка</h3> |
23 |
ineiev |
1.27 |
<p>През декември 2006 г., „Сън“ вече са започнали да <a |
24 |
|
|
href="http://www.fsf.org/news/fsf-welcomes-gpl-java.html">преиздават своята |
25 |
|
|
платформа на Джава под GNU GPL</a>. Очакваме, че когато тази промяна на |
26 |
|
|
лиценза завърши, Джава вече няма да представлява клопка. Въпреки това, като |
27 |
|
|
цяло, описаният тук въпрос ще остане важен, защото всяка несвободна |
28 |
|
|
библиотека или платформа за програмиране може да причини подобен проблем. |
29 |
|
|
Трябва да си вземем поука от историята на Джава, така че да избягваме други |
30 |
|
|
клопки за в бъдеще.</p> |
31 |
yavor |
1.14 |
|
32 |
th_g |
1.29 |
<p>Вижте също и <a href="/philosophy/javascript-trap.html">Клопката на |
33 |
|
|
JavaScript</a>.</p> |
34 |
|
|
</blockquote> |
35 |
yavor |
1.5 |
</div> |
36 |
yavor |
1.1 |
|
37 |
yavor |
1.5 |
<p>12 април 2004 г.</p> |
38 |
yavor |
1.1 |
|
39 |
|
|
<p> |
40 |
ineiev |
1.27 |
Ако програмата ви е свободен софтуер, то тя по същество е етична. |
41 |
|
|
Съществува обаче една клопка, за която трябва да бъдете нащрек. Въпреки че |
42 |
|
|
сама по себе си е свободна, програмата ви може да бъде ограничена от |
43 |
|
|
несвободния софтуер, от който зависи. Тъй като този проблем днес е най-ярко |
44 |
|
|
изразен при програмите на Джава, наричаме го „клопката на Джава“. |
45 |
|
|
</p> |
46 |
|
|
|
47 |
|
|
<p> |
48 |
|
|
Една програма е свободен софтуер, ако потребителите ѝ притежават определени |
49 |
|
|
съществени свободи. Грубо казано, те са: свободата да изпълняват |
50 |
|
|
програмата, свободата да изучават и променят изходния код, свободата да |
51 |
|
|
разпространяват изходния и двоичния код, и свободата да публикуват подобрени |
52 |
|
|
версии. (Вижте <a |
53 |
th_g |
1.29 |
href="/philosophy/free-sw.html">http://www.gnu.org/philosophy/free-sw.html</a>.) |
54 |
ineiev |
1.27 |
Дали дадена програма е свободен софтуер зависи изцяло от волята, заложена в |
55 |
|
|
лиценза ѝ. |
56 |
|
|
</p> |
57 |
|
|
|
58 |
|
|
<p> |
59 |
|
|
Дали обаче програмата може да бъде използвана в Свободния свят, дали може да |
60 |
|
|
бъде използвана от хора, които са решени да живеят в свобода, е по-сложен |
61 |
|
|
въпрос. Това не се определя само от лиценза на програмата, понеже нито една |
62 |
|
|
програма не работи в изолация. Всяка програма зависи от други програми. |
63 |
|
|
Например, ако дадена програма има нужда да бъде компилирана или |
64 |
|
|
интерпретирана, то тя зависи от компилатор или интерпретатор. Ако е |
65 |
|
|
компилирана до байткод, то тя зависи от интерпретатор на байткод. Освен |
66 |
|
|
това, за да бъде изпълнявана, програмата се нуждае и от библиотеки. Също |
67 |
|
|
така програмата би могла да извиква други самостоятелни програми, които се |
68 |
|
|
изпълняват като отделни процеси. Всички тези програми са зависимости. |
69 |
|
|
Зависимостите може да са необходими, за да бъде изобщо изпълнена програмата, |
70 |
|
|
но може и да са нужни само за да функционират някои нейни възможности. Така |
71 |
|
|
или иначе, цялата програма или част от нея не може да работи без |
72 |
th_g |
1.30 |
зависимостите. |
73 |
ineiev |
1.27 |
</p> |
74 |
|
|
|
75 |
|
|
<p> |
76 |
|
|
Ако някои от зависимостите на програмата са несвободни, то това означава, че |
77 |
|
|
цялата програма или част от нея не може да бъде изпълнена върху напълно |
78 |
|
|
свободна система — тя е безполезна в Свободния свят. Разбира се, ние можем |
79 |
|
|
да разпространяваме програмата и да притежаваме нейни копия върху машините |
80 |
|
|
си, но от това няма голяма полза, щом не можем да я изпълняваме. Тази |
81 |
|
|
програма е свободен софтуер, но на практика е окована от своите несвободни |
82 |
|
|
зависимости. |
83 |
|
|
</p> |
84 |
|
|
|
85 |
|
|
<p> |
86 |
|
|
Този проблем може да възникне с всеки вид софтуер, на какъвто и да е език за |
87 |
|
|
програмиране. Например, една свободна програма, която се изпълнява само |
88 |
|
|
върху Майкрософт Уиндоус, е очевидно безполезна в Свободния свят. Но |
89 |
|
|
софтуерът, който се изпълнява върху GNU/Линукс също може да бъде безполезен, |
90 |
|
|
ако зависи от друг несвободен софтуер. В миналото, Мотиф (преди да имаме |
91 |
|
|
ЛесТиф) и библиотеката „Кю ти“ (преди разработчиците ѝ да я направят |
92 |
|
|
свободен софтуер) бяха основните причини за този проблем. Повечето |
93 |
|
|
видеокарти с тримерно ускорение работят пълнофункционално само с несвободни |
94 |
|
|
драйвери, което също води до този проблем. Но днес основният източник на |
95 |
|
|
проблема е Джава, защото хората, които пишат свободен софтуер, често |
96 |
|
|
чувстват, че Джава е секси. Заслепени от привличането си към езика, те |
97 |
th_g |
1.30 |
пренебрегват въпроса със зависимостите и така попадат в „клопката на Джава“. |
98 |
ineiev |
1.27 |
</p> |
99 |
|
|
|
100 |
|
|
<p> |
101 |
|
|
Реализацията на Джава от „Сън“ е несвободна. Стандартните библиотеки на |
102 |
|
|
Джава също са несвободни. Ние разполагаме със свободни реализации на Джава, |
103 |
|
|
като например <a href="http://gcc.gnu.org/java/"> компилатора на GNU за |
104 |
|
|
Джава</a> (GCJ) и <a href="/software/classpath">GNU Класпат</a> (GNU |
105 |
|
|
Classpath), но те все още не поддържат напълно всички възможности. Все още |
106 |
|
|
наваксваме. |
107 |
yavor |
1.10 |
</p> |
108 |
|
|
|
109 |
|
|
<p> |
110 |
yavor |
1.13 |
Ако разработвате програма на Джава върху платформата на Джава от „Сън“, |
111 |
|
|
съществува опасност да използвате възможности, специфични само за „Сън“, без |
112 |
|
|
дори да забележите. След време, когато откриете това, може да са минали |
113 |
|
|
месеци, а пренаписването на тези части от програмата може да отнеме още |
114 |
|
|
месеци. Бихте могли да кажете: „Това е твърде много работа, за да се |
115 |
|
|
започне отначало.“ В този момент програмата ви ще е попаднала в „клопката |
116 |
yavor |
1.10 |
на Джава“. Програмата ви ще е безполезна в Свободния свят. |
117 |
|
|
</p> |
118 |
|
|
|
119 |
|
|
<p> |
120 |
yavor |
1.13 |
Сигурният начин да избегнете „клопката на Джава“ е да разполагате само със |
121 |
|
|
свободна реализация на Джава върху системата си. Тогава, ако използвате |
122 |
|
|
възможност на Джава или библиотека, която свободния софтуер все още не |
123 |
|
|
поддържа, ще откриете това незабавно и ще можете веднага да пренапишете кода |
124 |
th_g |
1.30 |
си. |
125 |
yavor |
1.10 |
</p> |
126 |
|
|
|
127 |
|
|
<p> |
128 |
ineiev |
1.27 |
„Сън“ продължава да разработва допълнителни „стандартни“ библиотеки на Джава |
129 |
|
|
и почти всички те са несвободни. В много случаи, дори спецификацията на |
130 |
|
|
библиотеката представлява търговска тайна, а последният лиценз на „Сън“ за |
131 |
|
|
тези спецификации забранява издаването на непълни реализации на |
132 |
|
|
спецификацията. (Вижте например <a |
133 |
yavor |
1.13 |
href="http://jcp.org/aboutJava/communityprocess/JSPA2.pdf">http://jcp.org/aboutJava/communityprocess/JSPA2.pdf</a> |
134 |
ineiev |
1.27 |
и <a |
135 |
th_g |
1.29 |
href="http://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html">http://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html</a>). |
136 |
yavor |
1.10 |
</p> |
137 |
|
|
|
138 |
|
|
<p> |
139 |
ineiev |
1.27 |
За щастие, този лиценз на спецификацията позволява издаването на нейна |
140 |
|
|
реализация като свободен софтуер. Така на трети лица, получили |
141 |
|
|
библиотеката, им е разрешено да я променят и не са задължени да се придържат |
142 |
|
|
към спецификацията. Но изискването води до забрана на използването на |
143 |
|
|
съвместен модел на разработка при произвеждането на свободна реализация. |
144 |
|
|
Използването на такъв модел би довело до публикуване на незавършени версии, |
145 |
th_g |
1.30 |
което не е разрешено на тези, които са чели спецификацията. |
146 |
yavor |
1.10 |
</p> |
147 |
|
|
|
148 |
|
|
<p> |
149 |
th_g |
1.29 |
В зората на движението за свободен софтуер беше невъзможно да се избегнат |
150 |
ineiev |
1.27 |
зависимостите от несвободни програми. Преди да имаме компилатора на GNU за |
151 |
|
|
Си, всяка програма на Си (свободна или не) зависеше от несвободен компилатор |
152 |
|
|
за Си. Преди да имаме библиотеката на GNU за Си, всяка програма зависеше от |
153 |
|
|
несвободна библиотека за Си. Преди да имаме Линукс, първото свободно ядро, |
154 |
|
|
всяка програма зависеше от несвободно ядро. Преди да имаме Bash, всеки |
155 |
|
|
скрипт на обвивката трябваше да бъде интерпретиран от несвободна обвивка. |
156 |
|
|
Бе неизбежно първите ни програми да бъдат обременени от тези зависимости, но |
157 |
|
|
ние приехме това, понеже последващото отърваване на тези програми бе част от |
158 |
|
|
нашия план. Нашата голяма цел — самостоятелна операционна система GNU — |
159 |
|
|
включваше свободни заместители на всички тези зависимости. Ако постигнехме |
160 |
|
|
целта си, тогава всички програми биха били отървани. Така и стана — със |
161 |
|
|
системата GNU/Линукс вече можем да изпълняваме тези програми върху свободни |
162 |
th_g |
1.30 |
платформи. |
163 |
yavor |
1.10 |
</p> |
164 |
|
|
|
165 |
|
|
<p> |
166 |
ineiev |
1.27 |
Ситуацията днес е различна. Сега разполагаме с мощни свободни операционни |
167 |
|
|
системи и много свободни средства за програмиране. Каквато и задача да |
168 |
|
|
захванете, можете да я извършите върху свободна платформа — няма нужда да |
169 |
|
|
приемате несвободна зависимост, даже дори временно. Днес основната причина, |
170 |
|
|
поради която хората попадат в клопката е, че не мислят за нея. Най-лесното |
171 |
th_g |
1.30 |
решение на проблема е да се обясни на хората да не попадат в клопката. |
172 |
yavor |
1.10 |
</p> |
173 |
|
|
|
174 |
|
|
<p> |
175 |
yavor |
1.13 |
За да предпазите кода си от „клопката на Джава“, инсталирайте свободна среда |
176 |
|
|
за разработване на Джава и я използвайте. По-общо казано, какъвто и език да |
177 |
|
|
използвате, отваряйте си очите на четири и проверявайте дали са свободни |
178 |
|
|
програмите, от които зависи кода ви. Най-лесният начин да проверите дали |
179 |
|
|
дадена програма е свободна е да погледнете за нея в Указателя на свободен |
180 |
|
|
софтуер (<a |
181 |
|
|
href="http://www.fsf.org/directory">http://www.fsf.org/directory</a>). Ако |
182 |
|
|
програмата не е в указателя, можете да сверите лиценза (или лицензите) ѝ |
183 |
|
|
спрямо списъка от лицензи за свободен софтуер (<a |
184 |
yavor |
1.10 |
href="/licenses/license-list.html">http://www.gnu.org/licenses/license-list.html</a>). |
185 |
|
|
</p> |
186 |
|
|
|
187 |
|
|
<p> |
188 |
ineiev |
1.27 |
Опитваме се да отървем програмите на Джава, които са хванати в капана. Така |
189 |
|
|
че, ако харесвате езика Джава, каним ви да помогнете при разработването на |
190 |
|
|
GNU Класпат. Също би било полезно изпробването на програмите ви с |
191 |
|
|
компилатора GCJ и GNU Класпат и докладването на всякакви проблеми, на които |
192 |
|
|
сте се натъкнали при вече реализираните класове. Все пак, завършването на |
193 |
|
|
GNU Класпат ще отнеме време — ако постоянно продължават да се добавят |
194 |
|
|
несвободни библиотеки, може винаги да ни липсват последните от тях. Така |
195 |
|
|
че, моля ви, не оковавайте свободния си софтуер. Днес, когато пишете |
196 |
|
|
свободна приложна програма, пишете я така, че от самото начало да се |
197 |
|
|
изпълнява върху свободни средства. |
198 |
yavor |
1.1 |
</p> |
199 |
|
|
|
200 |
yavor |
1.5 |
<h3>Вижте още:</h3> |
201 |
th_g |
1.29 |
<p><a href="/philosophy/sun-in-night-time.html">Любопитният инцидент със „Сън“ |
202 |
|
|
в късна доба</a></p> |
203 |
yavor |
1.10 |
|
204 |
th_g |
1.29 |
<div class="translators-notes"> |
205 |
yavor |
1.12 |
|
206 |
|
|
<!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.--> |
207 |
|
|
</div> |
208 |
yavor |
1.1 |
</div> |
209 |
yavor |
1.13 |
|
210 |
th_g |
1.29 |
<!-- for id="content", starts in the include above --> |
211 |
yavor |
1.5 |
<!--#include virtual="/server/footer.bg.html" --> |
212 |
|
|
<div id="footer"> |
213 |
th_g |
1.28 |
<div class="unprintable"> |
214 |
yavor |
1.1 |
|
215 |
th_g |
1.29 |
<p>Моля, отправяйте въпроси относно ФСС и GNU по е-поща: <a |
216 |
th_g |
1.28 |
href="mailto:gnu@gnu.org"><gnu@gnu.org></a>. Има и други начини за <a |
217 |
th_g |
1.29 |
href="/contact/">връзка</a> с ФСС. Моля, изпращайте доклади за счупени |
218 |
|
|
хипервръзки и други корекции (или предложения) на е-поща: <a |
219 |
|
|
href="mailto:webmasters@gnu.org"><webmasters@gnu.org></a>.</p> |
220 |
|
|
|
221 |
yavor |
1.1 |
<p> |
222 |
th_g |
1.29 |
<!-- TRANSLATORS: Ignore the original text in this paragraph, |
223 |
|
|
replace it with the translation of these two: |
224 |
|
|
|
225 |
|
|
We work hard and do our best to provide accurate, good quality |
226 |
|
|
translations. However, we are not exempt from imperfection. |
227 |
|
|
Please send your comments and general suggestions in this regard |
228 |
|
|
to <a href="mailto:web-translators@gnu.org"> |
229 |
|
|
|
230 |
|
|
<web-translators@gnu.org></a>.</p> |
231 |
|
|
|
232 |
|
|
<p>For information on coordinating and submitting translations of |
233 |
|
|
our web pages, see <a |
234 |
|
|
href="/server/standards/README.translations.html">Translations |
235 |
|
|
README</a>. --> |
236 |
th_g |
1.28 |
Моля, докладвайте грешки и предложения относно българския превод чрез <a |
237 |
|
|
href="mailto:web-translators@gnu.org"><web-translators@gnu.org></a>.</p> |
238 |
th_g |
1.29 |
<p>Вижте <a href="/server/standards/README.translations.html">Документацията |
239 |
|
|
за преводачи</a> за информация за координирането и подаването на преводи на |
240 |
|
|
тази статия.</p> |
241 |
th_g |
1.28 |
</div> |
242 |
yavor |
1.1 |
|
243 |
th_g |
1.29 |
<p>Copyright © 2004 Ричард Столман</p> |
244 |
|
|
|
245 |
|
|
<p>Може да копирате и разпространявате тази статия според условията на <a |
246 |
th_g |
1.30 |
rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/">Криейтив |
247 |
|
|
Комънс „Признание-Без производни произведения“ 4.0</a>.</p> |
248 |
yavor |
1.5 |
|
249 |
th_g |
1.28 |
<!--#include virtual="/server/bottom-notes.bg.html" --> |
250 |
yavor |
1.12 |
<div class="translators-credits"> |
251 |
|
|
|
252 |
|
|
<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.--> |
253 |
th_g |
1.30 |
<b>Превод</b>: Калоян Доганов <a |
254 |
yavor |
1.10 |
href="mailto:kaloian@doganov.org"><kaloian@doganov.org></a>, 2006 г.</div> |
255 |
th_g |
1.28 |
|
256 |
th_g |
1.29 |
<p class="unprintable"><!-- timestamp start --> |
257 |
yavor |
1.10 |
Последно обновяване: |
258 |
|
|
|
259 |
th_g |
1.30 |
$Date: 2015/10/03 16:55:22 $ |
260 |
yavor |
1.1 |
|
261 |
|
|
<!-- timestamp end --> |
262 |
|
|
</p> |
263 |
|
|
</div> |
264 |
ineiev |
1.27 |
</div> |
265 |
yavor |
1.1 |
</body> |
266 |
|
|
</html> |