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

Annotation of /www/philosophy/java-trap.bg.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.5 - (hide annotations) (download) (as text)
Sun Dec 17 08:47:09 2006 UTC (17 years, 10 months ago) by yavor
Branch: MAIN
Changes since 1.4: +50 -87 lines
File MIME type: text/html
Updated Bulgarian translation by Kaloian Doganov <kaloian@doganov.org>
(Closes: bug #18474).

1 yavor 1.5 <!--#include virtual="/server/header.bg.html" -->
2 yavor 1.1 <title>Свободен, но в окови - „клопката на Джава“</title>
3 yavor 1.5 <!--#include virtual="/server/banner.bg.html" -->
4 yavor 1.1
5 yavor 1.5 <h2>Свободен, но в окови — „клопката на Джава“</h2>
6 yavor 1.1
7 yavor 1.5 <p>от <a href="http://www.stallman.org/">Ричард Столман</a></p>
8 yavor 1.1
9 yavor 1.5 <div class="announcement"><h3>Встъпителна бележка</h3>
10     <p>През декември 2006 г., „Сън“ вече са започнали да <a href="http://www.fsf.org/news/fsf-welcomes-gpl-java.html">преиздават своята платформа на Джава под GNU GPL</a>. Очакваме, че когато тази промяна на лиценза завърши, Джава вече няма да представлява клопка. Въпреки това, като цяло, описаният тук въпрос ще остане важен, защото всяка несвободна библиотека или платформа за програмиране може да причини подобен проблем. Трябва да си вземем поука от историята на Джава, така че да избягваме други клопки за в бъдеще.</p>
11     </div>
12 yavor 1.1
13    
14 yavor 1.5 <p>12 април 2004 г.</p>
15 yavor 1.1
16     <p>
17     Ако програмата ви е свободен софтуер, то тя по същество е етична.
18     Съществува обаче една клопка, за която трябва да бъдете нащрек.
19     Въпреки че сама по себе си е свободна, програмата ви може да бъде
20     ограничена от несвободния софтуер, от който зависи. Тъй като този
21     проблем днес е най-ярко изразен при програмите на Джава, наричаме го
22     „клопката на Джава“.
23     </p>
24    
25     <p>
26     Една програма е свободен софтуер, ако потребителите ѝ притежават
27     определени съществени свободи. Грубо казано, те са: свободата да
28     изпълняват програмата, свободата да изучават и променят изходния
29     код, свободата да разпространяват изходния и двоичния код, и
30     свободата да публикуват подобрени
31 yavor 1.4 версии. (Вижте <a href="http://www.gnu.org/philosophy/free-sw.bg.html">
32     http://www.gnu.org/philosophy/free-sw.bg.html</a>.) Дали дадена
33 yavor 1.1 програма е свободен софтуер зависи изцяло от волята, заложена в
34     лиценза ѝ.
35     </p>
36    
37     <p>
38     Дали обаче програмата може да бъде използвана в Свободния свят, дали
39     може да бъде използвана от хора, които са решени да живеят в
40     свобода, е по-сложен въпрос. Това не се определя само от лиценза на
41     програмата, понеже нито една програма не работи в изолация. Всяка
42     програма зависи от други програми. Например, ако дадена програма
43     има нужда да бъде компилирана или интерпретирана, то тя зависи от
44     компилатор или интерпретатор. Ако е компилирана до байткод, то тя
45     зависи от интерпретатор на байткод. Освен това, за да бъде
46     изпълнявана, програмата се нуждае и от библиотеки. Също така
47     програмата би могла да извиква други самостоятелни програми, които
48     се изпълняват като отделни процеси. Всички тези програми са
49     зависимости. Зависимостите може да са необходими, за да бъде изобщо
50     изпълнена програмата, но може и да са нужни само за да функционират
51     някои нейни възможности. Така или иначе, цялата програма или част
52     от нея не може да работи без зависимостите.
53     </p>
54    
55     <p>
56     Ако някои от зависимостите на програмата са несвободни, то това
57     означава, че цялата програма или част от нея не може да бъде
58     изпълнена върху напълно свободна система — тя е безполезна в
59     Свободния свят. Разбира се, ние можем да разпространяваме
60     програмата и да притежаваме нейни копия върху машините си, но от
61     това няма голяма полза, щом не можем да я изпълняваме. Тази
62     програма е свободен софтуер, но на практика е окована от своите
63     несвободни зависимости.
64     </p>
65    
66     <p>
67     Този проблем може да възникне с всеки вид софтуер, на какъвто и да
68     е език за програмиране. Например, една свободна програма, която се
69     изпълнява само върху Майкрософт Уиндоус, е очевидно безполезна в
70     Свободния свят. Но софтуерът, който се изпълнява върху GNU/Линукс
71     също може да бъде безполезен, ако зависи от друг несвободен софтуер.
72     В миналото, Мотиф (преди да имаме ЛесТиф) и библиотеката „Кю ти“
73     (преди разработчиците ѝ да я направят свободен софтуер) бяха
74     основните причини за този проблем. Повечето видеокарти с тримерно
75     ускорение работят пълнофункционално само с несвободни драйвери,
76     което също води до този проблем. Но днес основният източник на
77     проблема е Джава, защото хората, които пишат свободен софтуер, често
78     чувстват, че Джава е секси. Заслепени от привличането си към езика,
79     те пренебрегват въпроса със зависимостите и така попадат в „клопката
80     на Джава“.
81     </p>
82    
83     <p>
84     Реализацията на Джава от „Сън“ е несвободна. Тази от „Блекдаун“
85     също е несвободна, тя е адаптация на собственическия код на „Сън“.
86     Стандартните библиотеки на Джава също са несвободни. Ние
87     разполагаме със свободни реализации на Джава, като например
88     компилатора на GNU за Джава (GCJ) и GNU Класпат (GNU Classpath), но
89     те все още не поддържат напълно всички възможности. Все още
90     наваксваме.
91     </p>
92    
93     <p>
94     Ако разработвате програма на Джава върху платформата на Джава от
95     „Сън“, съществува опасност да използвате възможности, специфични
96     само за „Сън“, без дори да забележите. След време, когато откриете
97     това, може да са минали месеци, а пренаписването на тези части от
98     програмата може да отнеме още месеци. Бихте могли да кажете: „Това
99     е твърде много работа, за да се започне отначало.“ В този момент
100     програмата ви ще е попаднала в „клопката на Джава“. Програмата ви ще
101     е безполезна в Свободния свят.
102     </p>
103    
104     <p>
105     Сигурният начин да избегнете „клопката на Джава“ е да разполагате само
106     със свободна реализация на Джава върху системата си. Тогава, ако
107     използвате възможност на Джава или библиотека, която свободния
108     софтуер все още не поддържа, ще откриете това незабавно и ще можете
109     веднага да пренапишете кода си.
110     </p>
111    
112     <p>
113     „Сън“ продължава да разработва допълнителни „стандартни“ библиотеки
114     на Джава и почти всички те са несвободни. В много случаи, дори
115     спецификацията на библиотеката представлява търговска тайна, а
116     последният лиценз на „Сън“ за тези спецификации забранява издаването
117     на непълни реализации на спецификацията. (Вижте например
118     <a href="http://jcp.org/aboutJava/communityprocess/JSPA2.pdf">
119     http://jcp.org/aboutJava/communityprocess/JSPA2.pdf</a> и
120     <a href="http://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html">
121     http://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html</a>).
122     </p>
123    
124     <p>
125     За щастие, този лиценз на спецификацията позволява издаването на
126     нейна реализация като свободен софтуер. Така на трети лица,
127     получили библиотеката, им е разрешено да я променят и не са
128     задължени да се придържат към спецификацията. Но изискването води
129     до забрана на използването на съвместен модел на разработка при
130     произвеждането на свободна реализация. Използването на такъв модел
131     би довело до публикуване на незавършени версии, което не е разрешено
132     на тези, които са чели спецификацията.
133     </p>
134    
135     <p>
136     В зората на Движението за свободен софтуер беше невъзможно да се
137     избегнат зависимостите от несвободни програми. Преди да имаме
138     компилатора на GNU за Си, всяка програма на Си (свободна или не)
139     зависеше от несвободен компилатор за Си. Преди да имаме
140     библиотеката на GNU за Си, всяка програма зависеше от несвободна
141     библиотека за Си. Преди да имаме Линукс, първото свободно ядро,
142     всяка програма зависеше от несвободно ядро. Преди да имаме Bash,
143     всеки скрипт на обвивката трябваше да бъде интерпретиран от
144     несвободна обвивка. Бе неизбежно първите ни програми да бъдат
145     обременени от тези зависимости, но ние приехме това, понеже
146     последващото отърваване на тези програми бе част от нашия план.
147     Нашата голяма цел — самостоятелна операционна система GNU
148     — включваше свободни заместители на всички тези зависимости.
149     Ако постигнехме целта си, тогава всички програми биха били отървани.
150     Така и стана — със системата GNU/Линукс вече можем да
151     изпълняваме тези програми върху свободни платформи.
152     </p>
153    
154     <p>
155     Ситуацията днес е различна. Сега разполагаме с мощни свободни
156     операционни системи и много свободни средства за програмиране.
157     Каквато и задача да захванете, можете да я извършите върху свободна
158     платформа — няма нужда да приемате несвободна зависимост, даже
159     дори временно. Днес основната причина, поради която хората попадат в
160     клопката е, че не мислят за нея. Най-лесното решение на проблема е
161     да се обясни на хората да не попадат в клопката.
162     </p>
163    
164     <p>
165     За да предпазите кода си от „клопката на Джава“, инсталирайте свободна
166     среда за разработване на Джава и я използвайте. По-общо казано,
167     какъвто и език да използвате, отваряйте си очите на четири и
168     проверявайте дали са свободни програмите, от които зависи кода ви.
169     Най-лесният начин да проверите дали дадена програма е свободна е да
170     погледнете за нея в Указателя на свободен софтуер
171     (<a href="http://www.fsf.org/directory">http://www.fsf.org/directory</a>).
172     Ако програмата не е в указателя, можете да сверите лиценза (или
173     лицензите) ѝ спрямо списъка от лицензи за свободен софтуер
174     (<a href="http://www.gnu.org/licenses/license-list.html">http://www.gnu.org/licenses/license-list.html</a>).
175     </p>
176    
177     <p>
178     Опитваме се да отървем програмите на Джава, които са хванати в
179     капана. Така че, ако харесвате езика Джава, каним ви да помогнете
180     при разработването на GNU Класпат. Също би било полезно
181     изпробването на програмите ви с компилатора GCJ и GNU Класпат и
182     докладването на всякакви проблеми, на които сте се натъкнали при
183     вече реализираните класове. Все пак, завършването на GNU Класпат ще
184     отнеме време — ако постоянно продължават да се добавят
185     несвободни библиотеки, може винаги да ни липсват последните от тях.
186     Така че, моля ви, не оковавайте свободния си софтуер. Днес, когато
187     пишете свободна приложна програма, пишете я така, че от самото
188     начало да се изпълнява върху свободни средства.
189     </p>
190    
191 yavor 1.5 <h3>Вижте още:</h3>
192     <p><a href="/philosophy/sun-in-night-time.bg.html">Любопитният инцидент със „Сън“ в късна доба</a></p>
193 yavor 1.1 </div>
194 yavor 1.5 <!--#include virtual="/server/footer.bg.html" -->
195 yavor 1.1
196 yavor 1.5 <div id="footer">
197 yavor 1.1
198     <p>
199     Моля, отправяйте въпроси относно ФСС и GNU по е-поща:
200     <a href="mailto:gnu@gnu.org"><em>gnu@gnu.org</em></a>. Има и други начини
201 yavor 1.5 за <a href="/home.bg.html#ContactInfo">връзка</a> с ФСС.</p>
202    
203     <p>Моля, изпращайте доклади за счупени хипервръзки и други корекции
204     (или предложения) на е-поща:
205 yavor 1.1 <a href="mailto:webmasters@gnu.org"><em>webmasters@gnu.org</em></a>.
206     </p>
207    
208     <p>
209     Вижте <a href="/server/standards/README.translations.html">Документацията
210     за преводачи</a> за информация за координирането и подаването на
211     преводи на тази статия.
212     </p>
213    
214 yavor 1.5 <p>Авторски права &copy; 2004 Ричард Столман</p>
215    
216     <p>Дословното копиране и разпространение на цялата статия са позволени
217     за всеки тип носител без нужда от заплащането на такси, стига тази
218 yavor 1.1 бележка да бъде запазена.
219     </p>
220    
221     <p>
222     <b>Превод</b>: <a href="http://doganov.org">Калоян Доганов</a> <a
223     href="mailto:kaloian@doganov.org">&lt;kaloian@doganov.org&gt;</a>, 2006 г.
224     <br />
225     Моля, докладвайте грешки и предложения относно българския превод чрез
226     <a href="http://savannah.gnu.org/bugs/?group=www-bg">системата за
227     проследяване на грешки</a> на <a
228     href="http://savannah.gnu.org/projects/www-bg/">проекта за превод на
229     www.gnu.org</a>. Благодарим Ви!</p>
230    
231     <p>
232     Последно обновяване:
233     <!-- timestamp start -->
234 yavor 1.5 $Date: 2006/12/16 10:56:27 $ $Author: kaloian $
235 yavor 1.1 <!-- timestamp end -->
236     </p>
237     </div>
238    
239 yavor 1.5 <div id="translations">
240     <h4>Други преводи на тази страница</h4>
241    
242     <!-- Please keep this list alphabetical, and in the original -->
243    
244     <!-- language if possible, otherwise default to English -->
245     <!-- If you do not have it English, please comment what the -->
246     <!-- English is. If you add a new language here, please -->
247     <!-- advise web-translators@gnu.org and add it to -->
248     <!-- - in /home/www/bin/nightly-vars either TAGSLANG or WEBLANG -->
249     <!-- - in /home/www/html/server/standards/README.translations.html -->
250     <!-- one of the lists under the section "Translations Underway" -->
251     <!-- - if there is a translation team, you also have to add an alias -->
252     <!-- to mail.gnu.org:/com/mailer/aliases -->
253     <!-- Please also check you have the 2 letter language code right versus -->
254     <!-- http://www.w3.org/WAI/ER/IG/ert/iso639.htm -->
255    
256     <ul class="translations-list">
257     <li><a href="/philosophy/java-trap.bg.html">&#x431;&#x44A;&#x43B;&#x433;&#x430;&#x440;&#x441;&#x43A;&#x438;</a> <!-- Bulgarian --></li>
258     <li><a href="/philosophy/java-trap.html">English</a></li>
259     <li><a href="/philosophy/java-trap.de.html">Deutsch</a> <!-- German --></li>
260     <li><a href="/philosophy/java-trap.fr.html">Fran&#x00e7;ais</a> <!-- French --></li>
261     <li><a href="/philosophy/java-trap.es.html">Espa&#x00f1;ol</a> <!-- Spanish --></li>
262     <li><a href="/philosophy/java-trap.it.html">Italiano</a> <!-- Italian --></li>
263     <li><a href="/philosophy/java-trap.pl.html">Polski</a> <!-- Polish --></li>
264     </ul>
265     </div>
266     </div>
267    
268 yavor 1.1 </body>
269     </html>

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