java-trap.html (19539B)
1 <!--#set var="PO_FILE" 2 value='<a href="/philosophy/po/java-trap.bg.po"> 3 https://www.gnu.org/philosophy/po/java-trap.bg.po</a>' 4 --><!--#set var="ORIGINAL_FILE" value="/philosophy/java-trap.html" 5 --><!--#set var="DIFF_FILE" value="" 6 --><!--#set var="OUTDATED_SINCE" value="2010-04-04" --> 7 8 <!--#include virtual="/server/header.bg.html" --> 9 <!-- Parent-Version: 1.77 --> 10 11 <!-- This file is automatically generated by GNUnited Nations! --> 12 <title>Свободен, но в окови - „клопката на Джава“ - Проектът GNU - Фондация за 13 свободен софтуер</title> 14 15 <!--#include virtual="/philosophy/po/java-trap.translist" --> 16 <!--#include virtual="/server/banner.bg.html" --> 17 <!--#include virtual="/server/outdated.bg.html" --> 18 <h2>Свободен, но в окови – „клопката на Джава“</h2> 19 20 <p>от <a href="http://www.stallman.org/">Ричард Столман</a></p> 21 22 <div class="announcement"><blockquote><h3>Встъпителна бележка</h3> 23 <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 32 <p>Вижте също и <a href="/philosophy/javascript-trap.html">Клопката на 33 JavaScript</a>.</p> 34 </blockquote> 35 </div> 36 37 <p>12 април 2004 г.</p> 38 39 <p> 40 Ако програмата ви е свободен софтуер, то тя по същество е етична. 41 Съществува обаче една клопка, за която трябва да бъдете нащрек. Въпреки че 42 сама по себе си е свободна, програмата ви може да бъде ограничена от 43 несвободния софтуер, от който зависи. Тъй като този проблем днес е най-ярко 44 изразен при програмите на Джава, наричаме го „клопката на Джава“. 45 </p> 46 47 <p> 48 Една програма е свободен софтуер, ако потребителите ѝ притежават определени 49 съществени свободи. Грубо казано, те са: свободата да изпълняват 50 програмата, свободата да изучават и променят изходния код, свободата да 51 разпространяват изходния и двоичния код, и свободата да публикуват подобрени 52 версии. (Вижте <a 53 href="/philosophy/free-sw.html">http://www.gnu.org/philosophy/free-sw.html</a>.) 54 Дали дадена програма е свободен софтуер зависи изцяло от волята, заложена в 55 лиценза ѝ. 56 </p> 57 58 <p> 59 Дали обаче програмата може да бъде използвана в Свободния свят, дали може да 60 бъде използвана от хора, които са решени да живеят в свобода, е по-сложен 61 въпрос. Това не се определя само от лиценза на програмата, понеже нито една 62 програма не работи в изолация. Всяка програма зависи от други програми. 63 Например, ако дадена програма има нужда да бъде компилирана или 64 интерпретирана, то тя зависи от компилатор или интерпретатор. Ако е 65 компилирана до байткод, то тя зависи от интерпретатор на байткод. Освен 66 това, за да бъде изпълнявана, програмата се нуждае и от библиотеки. Също 67 така програмата би могла да извиква други самостоятелни програми, които се 68 изпълняват като отделни процеси. Всички тези програми са зависимости. 69 Зависимостите може да са необходими, за да бъде изобщо изпълнена програмата, 70 но може и да са нужни само за да функционират някои нейни възможности. Така 71 или иначе, цялата програма или част от нея не може да работи без 72 зависимостите. 73 </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 пренебрегват въпроса със зависимостите и така попадат в „клопката на Джава“. 98 </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 </p> 108 109 <p> 110 Ако разработвате програма на Джава върху платформата на Джава от „Сън“, 111 съществува опасност да използвате възможности, специфични само за „Сън“, без 112 дори да забележите. След време, когато откриете това, може да са минали 113 месеци, а пренаписването на тези части от програмата може да отнеме още 114 месеци. Бихте могли да кажете: „Това е твърде много работа, за да се 115 започне отначало.“ В този момент програмата ви ще е попаднала в „клопката 116 на Джава“. Програмата ви ще е безполезна в Свободния свят. 117 </p> 118 119 <p> 120 Сигурният начин да избегнете „клопката на Джава“ е да разполагате само със 121 свободна реализация на Джава върху системата си. Тогава, ако използвате 122 възможност на Джава или библиотека, която свободния софтуер все още не 123 поддържа, ще откриете това незабавно и ще можете веднага да пренапишете кода 124 си. 125 </p> 126 127 <p> 128 „Сън“ продължава да разработва допълнителни „стандартни“ библиотеки на Джава 129 и почти всички те са несвободни. В много случаи, дори спецификацията на 130 библиотеката представлява търговска тайна, а последният лиценз на „Сън“ за 131 тези спецификации забранява издаването на непълни реализации на 132 спецификацията. (Вижте например <a 133 href="http://jcp.org/aboutJava/communityprocess/JSPA2.pdf">http://jcp.org/aboutJava/communityprocess/JSPA2.pdf</a> 134 и <a 135 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 </p> 137 138 <p> 139 За щастие, този лиценз на спецификацията позволява издаването на нейна 140 реализация като свободен софтуер. Така на трети лица, получили 141 библиотеката, им е разрешено да я променят и не са задължени да се придържат 142 към спецификацията. Но изискването води до забрана на използването на 143 съвместен модел на разработка при произвеждането на свободна реализация. 144 Използването на такъв модел би довело до публикуване на незавършени версии, 145 което не е разрешено на тези, които са чели спецификацията. 146 </p> 147 148 <p> 149 В зората на движението за свободен софтуер беше невъзможно да се избегнат 150 зависимостите от несвободни програми. Преди да имаме компилатора на GNU за 151 Си, всяка програма на Си (свободна или не) зависеше от несвободен компилатор 152 за Си. Преди да имаме библиотеката на GNU за Си, всяка програма зависеше от 153 несвободна библиотека за Си. Преди да имаме Линукс, първото свободно ядро, 154 всяка програма зависеше от несвободно ядро. Преди да имаме Bash, всеки 155 скрипт на обвивката трябваше да бъде интерпретиран от несвободна обвивка. 156 Бе неизбежно първите ни програми да бъдат обременени от тези зависимости, но 157 ние приехме това, понеже последващото отърваване на тези програми бе част от 158 нашия план. Нашата голяма цел — самостоятелна операционна система GNU — 159 включваше свободни заместители на всички тези зависимости. Ако постигнехме 160 целта си, тогава всички програми биха били отървани. Така и стана — със 161 системата GNU/Линукс вече можем да изпълняваме тези програми върху свободни 162 платформи. 163 </p> 164 165 <p> 166 Ситуацията днес е различна. Сега разполагаме с мощни свободни операционни 167 системи и много свободни средства за програмиране. Каквато и задача да 168 захванете, можете да я извършите върху свободна платформа — няма нужда да 169 приемате несвободна зависимост, даже дори временно. Днес основната причина, 170 поради която хората попадат в клопката е, че не мислят за нея. Най-лесното 171 решение на проблема е да се обясни на хората да не попадат в клопката. 172 </p> 173 174 <p> 175 За да предпазите кода си от „клопката на Джава“, инсталирайте свободна среда 176 за разработване на Джава и я използвайте. По-общо казано, какъвто и език да 177 използвате, отваряйте си очите на четири и проверявайте дали са свободни 178 програмите, от които зависи кода ви. Най-лесният начин да проверите дали 179 дадена програма е свободна е да погледнете за нея в Указателя на свободен 180 софтуер (<a 181 href="http://www.fsf.org/directory">http://www.fsf.org/directory</a>). Ако 182 програмата не е в указателя, можете да сверите лиценза (или лицензите) ѝ 183 спрямо списъка от лицензи за свободен софтуер (<a 184 href="/licenses/license-list.html">http://www.gnu.org/licenses/license-list.html</a>). 185 </p> 186 187 <p> 188 Опитваме се да отървем програмите на Джава, които са хванати в капана. Така 189 че, ако харесвате езика Джава, каним ви да помогнете при разработването на 190 GNU Класпат. Също би било полезно изпробването на програмите ви с 191 компилатора GCJ и GNU Класпат и докладването на всякакви проблеми, на които 192 сте се натъкнали при вече реализираните класове. Все пак, завършването на 193 GNU Класпат ще отнеме време — ако постоянно продължават да се добавят 194 несвободни библиотеки, може винаги да ни липсват последните от тях. Така 195 че, моля ви, не оковавайте свободния си софтуер. Днес, когато пишете 196 свободна приложна програма, пишете я така, че от самото начало да се 197 изпълнява върху свободни средства. 198 </p> 199 200 <h3>Вижте още:</h3> 201 <p><a href="/philosophy/sun-in-night-time.html">Любопитният инцидент със „Сън“ 202 в късна доба</a></p> 203 204 <div class="translators-notes"> 205 206 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.--> 207 </div> 208 </div> 209 210 <!-- for id="content", starts in the include above --> 211 <!--#include virtual="/server/footer.bg.html" --> 212 <div id="footer"> 213 <div class="unprintable"> 214 215 <p>Моля, отправяйте въпроси относно ФСС и GNU по е-поща: <a 216 href="mailto:gnu@gnu.org"><gnu@gnu.org></a>. Има и други начини за <a 217 href="/contact/">връзка</a> с ФСС. Моля, изпращайте доклади за счупени 218 хипервръзки и други корекции (или предложения) на е-поща: <a 219 href="mailto:webmasters@gnu.org"><webmasters@gnu.org></a>.</p> 220 221 <p> 222 <!-- 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 Моля, докладвайте грешки и предложения относно българския превод чрез <a 237 href="mailto:web-translators@gnu.org"><web-translators@gnu.org></a>.</p> 238 <p>Вижте <a href="/server/standards/README.translations.html">Документацията 239 за преводачи</a> за информация за координирането и подаването на преводи на 240 тази статия.</p> 241 </div> 242 243 <p>Copyright © 2004 Ричард Столман</p> 244 245 <p>Може да копирате и разпространявате тази статия според условията на <a 246 rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/">Криейтив 247 Комънс „Признание-Без производни произведения“ 4.0</a>.</p> 248 249 <!--#include virtual="/server/bottom-notes.bg.html" --> 250 <div class="translators-credits"> 251 252 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.--> 253 <b>Превод</b>: Калоян Доганов <a 254 href="mailto:kaloian@doganov.org"><kaloian@doganov.org></a>, 2006 г.</div> 255 256 <p class="unprintable"><!-- timestamp start --> 257 Последно обновяване: 258 259 $Date: 2017/03/24 12:24:01 $ 260 261 <!-- timestamp end --> 262 </p> 263 </div> 264 </div> 265 </body> 266 </html>