summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/el/java-trap.html
blob: c69d404e9fc7009d25f7ca017596598429142f2e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
<!--#set var="PO_FILE"
 value='<a href="/philosophy/po/java-trap.el.po">
 https://www.gnu.org/philosophy/po/java-trap.el.po</a>'
 --><!--#set var="ORIGINAL_FILE" value="/philosophy/java-trap.html"
 --><!--#set var="DIFF_FILE" value=""
 --><!--#set var="OUTDATED_SINCE" value="2007-12-15" -->

<!--#include virtual="/server/header.el.html" -->
<!-- Parent-Version: 1.77 -->

<!-- This file is automatically generated by GNUnited Nations! -->
<title>Ελεύθερο αλλά δεσμευμένο - η παγίδα της Java - Έργο GNU - Ίδρυμα Ελεύθερου
Λογισμικού</title>

<!--#include virtual="/philosophy/po/java-trap.translist" -->
<!--#include virtual="/server/banner.el.html" -->
<!--#include virtual="/server/outdated.el.html" -->
<h2>Ελεύθερο αλλά δεσμευμένο - η παγίδα της Java</h2>

<p>από τον <a href="http://www.stallman.org/">Richard Stallman</a></p>

<div class="announcement"><blockquote><h3>Υποσημείωση</h3>

<p>Τον Δεκέμβριο του 2006, η Sun έχει ξεκινήσει την <a
href="http://www.fsf.org/news/fsf-welcomes-gpl-java.html">αναδημοσίευση της
πλατφόρμας Java υπό την άδεια GNU GPL</a>. Όταν ολοκληρωθεί αυτή η αλλαγή
άδειας, η Java δεν θα αποτελεί πλέον παγίδα. Παρόλα αυτά, το γενικό ζήτημα
που περιγράφεται εδώ παραμένει σημαντικό, επειδή οποιαδήποτε μη ελεύθερη
βιβλιοθήκη η πλατφόρμα προγραμματισμού μπορεί να προκαλέσει παρόμοια
προβλήματα. Πρέπει να πάρουμε το μάθημα μας από το παρελθόν της Java, ώστε
να αποφύγουμε ενδεχόμενες μελλοντικές παγίδες.</p>

<p>Παρακαλούμε δείτε επίσης: <a href="/philosophy/javascript-trap.html"> Η
παγίδα της JavaScript</a>.</p>
</blockquote>
</div>

<p>12 Απριλίου, 2004</p>

<p>
  Εάν το πρόγραμμά σας είναι ελεύθερο λογισμικό, είναι γενικά ηθικό&mdash;αλλά
υπάρχει μια παγίδα για την οποία πρέπει να είστε σε ετοιμότητα. Το
πρόγραμμά σας, αν και είναι ελεύθερο, μπορεί να περιοριστεί από το
ανελεύθερο   λογισμικό από το οποίο εξαρτάται. Δεδομένου ότι αυτό το
πρόβλημα είναι το πιο σοβαρό σήμερα για τα προγράμματα της Java, το καλούμε
η παγίδα της Java.
</p>

<p>
  Ένα πρόγραμμα είναι ελεύθερο λογισμικό εάν οι χρήστες του έχουν ορισμένες
κρίσιμες ελευθερίες. Χοντρικά, αυτές είναι: η ελευθερία να εκτέλεσης του
προγράμματος, η ελευθερία μελέτης και μεταβολής του πηγαίου κώδικα, η
ελευθερία επαναδημοσιοποίησης του πηγαίου κώδικα και των εκτελέσιμων
αρχείων, και η ελευθερία δημοσίευσης βελτιωμένων εκδόσεων. (Δείτε  <a
href="/philosophy/free-sw.html">http://www.gnu.org/philosophy/free-sw.html</a>.)
Εάν το οποιοδήποτε δεδομένο πρόγραμμα είναι ελεύθερο λογισμικό εξαρτάται
αποκλειστικά από το περιεχόμενο της άδειας χρήσεως του.
</p>

<p>
  Το εάν όμως το συγκεκριμένο πρόγραμμα μπορεί να χρησιμοποιηθεί στον Ελεύθερο
Κόσμο, από τους ανθρώπους που θέλουν να ζουν με ελευθερία, είναι μια πιο
σύνθετη ερώτηση. Αυτό δεν καθορίζεται από την άδεια χρήσεως του
προγράμματος, επειδή κανένα πρόγραμμα δεν λειτουργεί μεμονωμένα. Κάθε
πρόγραμμα εξαρτάται από άλλα προγράμματα. Παραδείγματος χάριν, ένα πρόγραμμα
πρέπει να μεταγλωττιστεί ή να διερμηνευτεί, άρα εξαρτάται από έναν
μεταγλωττιστή ή έναν διερμηνέα. Εάν συντάσσεται στον κώδικα χαρακτήρων (byte
code), εξαρτάται από έναν διερμηνέα κώδικα χαρακτήρων. Επιπλέον, χρειάζεται
βιβλιοθήκες προκειμένου να εκτελεστεί, και μπορεί επίσης να απαιτεί και άλλα
χωριστά προγράμματα που τρέχουν σε άλλες διαδικασίες. Όλα αυτά τα
προγράμματα είναι εξαρτήσεις. Οι εξαρτήσεις μπορεί να είναι απαραίτητες για
να μπορεί να εκτελεστεί το πρόγραμμα, ή μπορούν να είναι απαραίτητες μόνο
για ορισμένα χαρακτηριστικά του γνωρίσματα. Σε κάθε περίπτωση, σύνολο ή
μέρος του προγράμματος δεν μπορεί να λειτουργήσει χωρίς τις εξαρτήσεις.
</p>

<p>
  Εάν μερικές από τις εξαρτήσεις ενός προγράμματος είναι ανελεύθερες, αυτό
σημαίνει ότι σύνολο ή μέρος του προγράμματος είναι ανίκανο να εκτελεστεί σε
ένα εξ ολοκλήρου ελεύθερο σύστημα&mdash;είναι ακατάλληλο προς χρήση για τον
Ελεύθερο Κόσμο. Βέβαια, θα μπορούσαμε να επαναδημοσιοποιήσουμε το πρόγραμμα
και να έχουμε αντίγραφα για τις μηχανές μας, αλλά θα ήταν άχρηστο εάν δεν
μπορούσε να εκτελεστεί. Αυτό το πρόγραμμα είναι μεν ελεύθερο λογισμικό, αλλά
χάνει την αποτελεσματικότητα του από τις ανελεύθερες εξαρτήσεις του.
</p>

<p>
  Το πρόβλημα αυτό μπορεί να εμφανιστεί σε οποιοδήποτε είδος λογισμικού, σε
οποιαδήποτε γλώσσα προγραμματισμού. Παραδείγματος χάριν, ένα ελεύθερο
πρόγραμμα που τρέχει μόνο στα Microsoft Windows είναι σαφώς άχρηστο για τον
Ελεύθερο Κόσμο. Το λογισμικό που τρέχει στο GNU/Linux μπορεί επίσης να είναι
άχρηστο εάν εξαρτάται από άλλο ανελεύθερο λογισμικό. Στο παρελθόν, το Motif
(πριν τη δημιουργία του LessTif) και το QT (πριν οι κατασκευαστές του το
μετατρέψουν σε ελεύθερο) ήταν σημαντικές αιτίες αυτού του προβλήματος. Οι
περισσότερες τρισδιάστατες κάρτες οθόνης (γραφικών) λειτουργούν πλήρως μόνο
με ανελεύθερους οδηγούς, οι οποίοι προκαλούν επίσης το ίδιο πρόβλημα. Αλλά η
σημαντικότερη πηγή αυτού του προβλήματος είναι σήμερα η Java, επειδή οι
άνθρωποι που γράφουν ελεύθερο λογισμικό αισθάνονται συχνά ότι η Java είναι
ελκυστική. Τυφλοί από την έλξη τους στη γλώσσα, αγνοούν το ζήτημα των
εξαρτήσεων, και πέφτουν στην παγίδα της Java.
</p>

<p>
  Η υλοποίηση της Java από τη Sun είναι μη-ελεύθερη. Οι τυποποιημένες
βιβλιοθήκες της Java είναι επίσης μη-ελεύθερες. Εμείς έχουμε ελεύθερες
υλοποιήσεις της Java, όπως ο <a
href="http://gcc.gnu.org/java/">μεταγλωττιστής GNU για την Java</a> (GCJ)
και το <a href="/software/classpath">GNU Classpath</a>, αλλά δεν
υποστηρίζουν όλα τα χαρακτηριστικά γνωρίσματα ακόμα. Προλαβαίνουμε ακόμη.
</p>

<p>
  Εάν αναπτύσσετε ένα πρόγραμμα της Java για την πλατφόρμα της Sun, είστε
εκτεθειμένοι στα χαρακτηριστικά γνωρίσματα χρήσης της Sun χωρίς καν να το
αντιληφθείτε. Τη στιγμή που θα το ανακαλύψετε, μπορεί να τα χρησιμοποιούσατε
για μήνες, και η επανασυγγραφή των έργων σας θα μπορούσε να πάρει ακόμη
περισσότερους μήνες. Πιθανότατα θα πείτε, &ldquo;είναι πάρα πολλή δουλειά
για να ξεκινήσω ξανά από την αρχή.&rdquo; Έτσι το πρόγραμμά σας θα έχει
πέσει στην παγίδα της Java. Θα είναι ακατάλληλο προς χρήση στον Ελεύθερο
Κόσμο.
</p>

<p>
  Ο αξιόπιστος τρόπος ώστε να αποφευχθεί η παγίδα της Java είναι να έχετε μόνο
μια ελεύθερη υλοποίηση της Java στο σύστημά σας. Κατόπιν εάν χρησιμοποιήσετε
ένα χαρακτηριστικό γνώρισμα ή μια βιβλιοθήκη της Java που το ελεύθερο
λογισμικό δεν υποστηρίζει ακόμα, θα το ανακαλύψετε αμέσως, και μπορείτε να
ξαναγράψετε αυτό τον κώδικα άμεσα.
</p>

<p>
  Η Sun συνεχίζει να αναπτύσσει τις πρόσθετες &ldquo;τυποποιημένες&rdquo;
βιβλιοθήκες της Java, και σχεδόν όλες τους είναι  μη-ελεύθερες. Σε πολλές
περιπτώσεις, ακόμη και η προδιαγραφή μιας βιβλιοθήκης είναι ένα εμπορικό
μυστικό, και η  πιο πρόσφατη άδεια της Sun για αυτές τις προδιαγραφές
απαγορεύει τη δημοσίευση (release) οτιδήποτε λιγότερου από  μια πλήρη
υλοποίηση της προδιαγραφής. (Δείτε <a
href="http://jcp.org/aboutJava/communityprocess/JSPA2.pdf">http://jcp.org/aboutJava/communityprocess/JSPA2.pdf</a>
και <a
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>,
για παραδείγματα).
</p>

<p>
  Ευτυχώς, αυτή η προδιαγραφή της άδειας (της Sun) επιτρέπει τη δημοσίευση μία
υλοποίησης ως ελεύθερο λογισμικό. Δηλαδή άλλοι χρήστες της βιβλιοθήκης
επιτρέπεται να την αλλάξουν δίχως να απαιτείται να προσθέσουν τις αλλαγές
τους στην προδιαγραφή. Όμως οι απαιτήσεις της έχουν ως αποτέλεσμα η
δημιουργία ενός συνεργατικού μοντέλου ανάπτυξης και η δημιουργία μίας
ελεύθερης υλοποίησης να είναι απαγορευτική. Η χρήση αυτού του μοντέλου
συνεπάγεται την δημοσίευση ελλιπών εκδόσεων, στις οποίες όσοι έχουν διαβάσει
την προδιαγραφή (της Sun) δεν επιτρέπεται να συμμετάσχουν.
</p>

<p>
  Στις αρχές του κινήματος ελεύθερου λογισμικού, ήταν αδύνατο να αποφευχθεί η
εξάρτηση από μη-ελεύθερα προγράμματα. Πριν αποκτήσουμε τον μεταγλωττιστή GNU
C, κάθε πρόγραμμα C (ελεύθερο ή όχι) είχε εξάρτηση από έναν μη-ελεύθερο
μεταγλωττιστή C. Πριν αποκτήσουμε τη βιβλιοθήκη GNU C, κάθε πρόγραμμα είχε
εξάρτηση από μια μη-ελεύθερη βιβλιοθήκη C. Πριν αποκτήσουμε τον Linux, τον
πρώτο ελεύθερο πυρήνα, κάθε πρόγραμμα είχε εξάρτηση από έναν μη-ελεύθερο
πυρήνα. Πριν αποκτήσουμε το BASH, κάθε κώδικας κελύφους (shellscript) έπρεπε
να ερμηνευθεί από ένα μη-ελεύθερο κέλυφος. Ήταν αναπόφευκτο ότι τα πρώτα
προγράμματά μας θα παρακωλύονταν αρχικά από αυτές τις εξαρτήσεις, αλλά το
δεχτήκαμε επειδή το σχέδιό μας συμπεριλάμβανε να τα διασώσει στη συνέχεια. Ο
γενικός στόχος μας, ένα αυτό-φιλόξενο λειτουργικό σύστημα GNU,
συμπεριλαμβανομένων τις ελεύθερες αντικαταστάσεις για όλες εκείνες τις
εξαρτήσεις. Εάν πετυχαίναμε το στόχο, όλα τα προγράμματά μας θα
διασώζονταν. Έτσι κι έγινε: με το σύστημα GNU/Linux, μπορούμε τώρα να
εκτελέσουμε αυτά τα προγράμματα σε ελεύθερες πλατφόρμες.
</p>

<p>
  Η κατάσταση σήμερα είναι διαφορετική. Πλέον έχουμε ισχυρά ελεύθερα
λειτουργικά συστήματα και πολλά ελεύθερα εργαλεία
προγραμματισμού. Οποιαδήποτε εργασία κι αν θέλετε να κάνετε, μπορείτε να την
κάνετε σε μια ελεύθερη πλατφόρμα. Δεν υπάρχει καμία ανάγκη να γίνει αποδεκτή
μια μη-ελεύθερες εξάρτηση ακόμα και προσωρινά. Ο κύριος λόγος της πτώσης των
ανθρώπων στην παγίδα της Java σήμερα είναι επειδή δεν το σκέφτονται. Η
ευκολότερη λύση στο πρόβλημα της παγίδας της Java είναι να διδαχθούν οι
άνθρωποι ώστε να μην πέφτουν σε αυτήν.
</p>

<p>
  Για να κρατήσετε τον κώδικα σας γραμμένο σε Java μακριά από την παγίδα της,
εγκαταστήστε ένα ελεύθερο περιβάλλον ανάπτυξης της Java και χρησιμοποιήστε
το. Γενικότερα, οποιαδήποτε γλώσσα κι αν χρησιμοποιείτε, κρατήστε τα μάτια
σας ανοικτά, και ελέγξτε την ελεύθερη κατάσταση των προγραμμάτων από τα
οποία εξαρτάται ο κώδικάς σας. Ο ευκολότερος τρόπος να εξακριβωθεί ότι
κάποιο πρόγραμμα είναι ελεύθερο είναι με έρευνα για την ύπαρξή του στον
κατάλογο ελεύθερου λογισμικού (<a
href="http://www.fsf.org/directory">http://www.fsf.org/directory</a>). Εάν
ένα πρόγραμμα δεν είναι στον κατάλογο, μπορείτε να ελέγξετε την(ις)
άδεια(ες) του σε σχέση με τον κατάλογο αδειών ελεύθερου λογισμικού (<a
href="/licenses/license-list.html">http://www.gnu.org/licenses/license-list.html</a>).
</p>

<p>
  Προσπαθούμε να διασώσουμε τα παγιδευμένα προγράμματα της Java, έτσι εάν
συμπαθείτε τη γλώσσα Java, σας προσκαλούμε να βοηθήσετε στην ανάπτυξη του
GNU Classpath. Δοκιμάζοντας τα προγράμματά σας με το μεταγλωττιστή GCJ και
το GNU Classpath, και εκθέτοντας οποιαδήποτε προβλήματα αντιμετωπίζετε στις
κλάσεις που υλοποιήθηκαν ήδη, γίνεστε χρήσιμοι. Εντούτοις, η ολοκλήρωση του
GNU Classpath θα πάρει χρόνο. Εάν περισσότερες ανελεύθερες βιβλιοθήκες
συνεχίζουν να προστίθενται, ίσως να μην μπορέσουμε να τις έχουμε ποτέ
όλες. Για αυτό παρακαλούμε μην βάλετε το ελεύθερο λογισμικό σας σε
δεσμούς. Όταν γράφετε ένα πρόγραμμα εφαρμογών σήμερα, γράψτε το ώστε να
εκτελείται σε ελεύθερες πλατφόρμες εξ' αρχής.
</p>

<h3>Δείτε επίσης:-</h3>
<p><a href="/philosophy/sun-in-night-time.html">The Curious Incident of Sun in
the Night-Time</a></p>

<div class="translators-notes">

<!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->
 </div>
</div>

<!-- for id="content", starts in the include above -->
<!--#include virtual="/server/footer.el.html" -->
<div id="footer">
<div class="unprintable">

<p>Παρακαλούμε στείλτε ερωτήσεις για τα ΙΕΛ &amp; GNU στο <a
href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.  Υπάρχουν επίσης <a
href="/contact/">άλλοι τρόποι για να επικοινωνήσετε</a> με το ΙΕΛ. Ανενεργοί
σύνδεσμοι και άλλες διορθώσεις ή προτάσεις μπορούν να σταλούν στο <a
href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>

<p>
<!-- TRANSLATORS: Ignore the original text in this paragraph,
        replace it with the translation of these two:

        We work hard and do our best to provide accurate, good quality
        translations.  However, we are not exempt from imperfection.
        Please send your comments and general suggestions in this regard
        to <a href="mailto:web-translators@gnu.org">

        &lt;web-translators@gnu.org&gt;</a>.</p>

        <p>For information on coordinating and submitting translations of
        our web pages, see <a
        href="/server/standards/README.translations.html">Translations
        README</a>. -->
Εργαζόμαστε σκληρά και κάνουμε ό,τι καλύτερο μπορούμε για να παρέχουμε
ακριβείς, καλής ποιότητας μεταφράσεις.  Ωστόσο, δεν εξαιρούμαστε από
ατέλειες.  Παρακαλούμε, στείλτε τα σχόλιά σας και τις γενικές παρατηρήσεις
σας σχετικά με αυτό το θέμα στο <a
href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>.</p><p>Για
πληροφορίες σχετικά με το συντονισμό και την υποβολή μεταφράσεων των
ιστοσελίδων μας, δείτε το <a
href="/server/standards/README.translations.html">Μεταφράσεις ΔΙΑΒΑΣΕΜΕ</a>.</p>
</div>

<p>Copyright &copy; 2004 Richard Stallman</p>

<p>Αυτή η σελίδα διατίθεται υπό την άδεια: <a rel="license"
href="http://creativecommons.org/licenses/by-nd/4.0/deed.el">Creative
Commons Αναφορά Δημιουργού-Όχι Παράγωγα Έργα 4.0 Διεθνές</a>.</p>

<!--#include virtual="/server/bottom-notes.el.html" -->
<div class="translators-credits">

<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
Μετάφραση στα ελληνικά: <a
href="http://savannah.gnu.org/users/freeasinfreedom">Athanasios
Kasampalis</a>.</div>

<p class="unprintable"><!-- timestamp start -->
Ενημερώθηκε:

$Date: 2017/03/31 09:12:45 $

<!-- timestamp end -->
</p>
</div>
</div>
</body>
</html>