Εισαγωγή στην Java - κεφ. 1

...ασύγχρονα μαθήματα γλώσσας Java

Εισαγωγή στην Java - κεφ. 1

Δημοσίευσηαπό alkismavridis » 25 Απρ 2012, 23:26

Καλώς ήλθατε στην Java!
Με αυτό τον οδηγό θα δούμε τις βασικές έννοιες και εντολές της γλώσσας αυτής, και θα δημιουργήσουμε τα πρώτα μας προγράμματα!
Πριν αρχίσουμε, να σας πω ότι θα προσπαθήσω να κάνω έναν οδηγό όσο πιο συμπυκνωμένο, αλλά και κατανοητό γίνεται.
Αν θέλετε να έχετε μια πληρέστερη εικόνα (αλλά αυτό απαιτεί πολύ περισσότερο διάβασμα απ' ότι αυτός ο οδηγός) υπάρχει στα αγγλικά η επίσημη ιστοσελίδα της Oracle εδώ. Καλύπτει τα πάντα γύρω από την Java, εκτός του compiler gcj, που θεωρώ ότι είναι ένα πολύ χρήσιμο εργαλείο. Όπως και να έχει το παραπάνω link είναι ένα πολύ χρήσιμο εργαλείο που θα σας συνιστούσα να έχετε στους σελιδοδείκτες σας αν θέλετε να ασχοληθείτε με τη γλώσσα αυτή!


Επόμενο: Το πρώτο μας πρόγραμμα

Εισαγωγή




Ας αρχίσουμε λοιπόν!
Η Java είναι μία γλώσσα με πολλές δυνατότητες και ιδιαιτερότητες. Αν γνωρίζετε C, C++ ή D θα νοιώσετε πολύ οικεία με την ορθογραφία της, αλλά ακόμα και αν δεν έχετε εμπειρία με αυτές τις γλώσσες (με λίγη δουλειά παραπάνω) όλα θα πάνε καλά! Ας αρχίσουμε λοιπόν να γνωριζόμαστε με τη γλώσσα!

Η Java είναι Αντικειμενοστραφής
Αυτό σημαίνει πρακτικά ότι εκτός από τους βασικούς τύπους (αριθμοί, χαρακτήρες κτλ) υπάρχουν και πιο σύνθετες δομές που ονομάζονται αντικείμενα. Αυτά «περιέχουν» δίαφορους βασικούς τύπους (ακόμα και άλλα αντικείμενα!), καθώς και «διαδικασίες» που κάνουν διάφορες χρήσιμες δουλειές.
Η Java μας δίνει αρκετά έτοιμα αντικείμενα. Παρ όλα αυτά μπορούμε να φτιάξουμε και τα δικά μας!

Η Java φτιάχνει εύκολα εφαρμογές γραφικού περοβάλλοτνος
Αν θέλετε τα προγράμματά σας να μην είναι μόνο μία μαύρη οθόνη με γράμματα που τρέχουν, είστε στο σωστό μέρος! Εδώ μπορείτε (εκτός από τη μαύρη οθόνη) να χρησιμοποιήσετε παράθυρα, κουμπάκια, περιοχές για κείμενο, πίνακες, καρτέλες και ό,τι άλλο χωράει ο νούς σας.


Τα Bytecode
Ένα βασικό γνώρισμα της java είναι η δημιουργία bytecode.Το bytecode είναι μία ενδιάμεση μορφή μεταξύ κώδικα (κώδικας= το κείμενο που γράφουμε ως προγραμματιστές) και εκτελέσιμου προγράμματος. Η διαφορά είναι ότι αντί να εκτελείται απ' ευθείας απ' το λειτουργικό σύστημα, το bytecode εκτελείται από ένα άλλο πρόγραμμα (Virtual machine ή πιο συγκεκριμένα jre = java runtime enviroment). Αυτό πρακτικά σημαίνει ότι εμείς ως προγραμματιστές φτιάχνουμε bytecode, και το εκάστοτε jre δίνει «σάρκα και οστά» στο bytecode μας.
Αυτό έχει (όπως όλα στη ζωή!) τα θετικά και τα αρνητικά του.

Θετικά:
1. Είναι πολύ ευέλικτο αρχείο! Φτιάξτε ένα bytecode στον υπολογιστή σας που τρέχει Linux, πάρτε το στο φλασάκι σας και τρέξτε το σε έναν υπολογιστή με Windows, Mac, 32-bit, 64-bit ή ότι άλλο μπορείτε να φανταστείτε, αρκεί να έχει εγκατεστημένο κάποιο Virtual machine. Στείλτε το με e-mail σε φίλους, χωρίς να σας ενδιαφέρει τι λειτουργικό ή τι μηχάνημα έχουν. Το πρόγραμμά σας θα τρέξει κανονικά! Υπό αυτήν την έννοια, η Java είναι μία γλώσσα "Compile once, run everywhere!"
2.Μικρό μέγεθος. Το bytecode είναι πολύ μικρότερο σε μέγεθος από το αντίστοιχο εκτελέσιμο. Και αυτό είναι από τους λόγους που η Java έγινε πολύ δημοφιλής στις εφαρμογές διαδικτύου. Όταν φτιάχνεις website, το να είναι μικρό για να «κατεβαίνει» γρήγορα σε ενδιαφέρει πολύ!

Αρνητικά:
1. Επειδή τρέχει μέσα από ένα άλλο πρόγραμμα, χρειάζεται περισσότερη RAM. Το virtual machine από μόνο του παίρνει μερικά MB.
2. Σε κάποιες διεργασίες λόγω αυτού του ενδιάμεσου βήματος, το bytecode θα τρέχει πιο αργά από το αντίστοιχο εκτελέσιμο.

Το εκτελέσιμο
Να και κάτι που πολλοί δεν ξέρουν.

Η Java μπορεί να δημιουργίσει εκτελέσιμα αρχεία όπως οι άλλες γλώσσες.

Ο αντίστοιχος compiler που κάνει τη δουλειά είναι ο gcj. Λεπτομέρειες προσεχώς!



Τελειώνοντας αυτή την εισαγωγή, να δούμε τι εργαλεία θα χρειαστούμε για να προγραμματίσουμε σε Java:

1. Κειμενογράφος
Όποιον προτιμάτε! Προσωπικά χρησιμοποιώ gedit (που είναι προ-εγγατεστημένος στο ubuntu) και είμαι πολύ ευχαριστημένος.
2.Τερματικό
3. Compiler

Εδώ έχω να προτείνω δύο επιλογές:
open-jdk: Σημαίνει "Java-development-kit" και είναι ο πιο δημοφιλής compiler για Java. Παράγει bytecode, όχι εκτελέσιμα.
για να το εγκαταστήσουμε πατάμε στο τερματικό
Κώδικας: Επιλογή όλων
sudo apt-get install default-jdk


gcj-jdk: Το ξαδερφάκι του gcc για την Java. Μπορεί να παράγει και bytecode και εκτελέσιμα. Για εγκατάσταση πατάμε στο τερματικό:
Κώδικας: Επιλογή όλων
sudo apt-get install gcj-jdk

Για να τρέξουν σε κάποιο άλλο pc τα προγράμματά μας πρέπει το σύστημα να είναι παρόμοιο με το δικό μας (που έγινε το compile) και επίσης να υπάρχει η βιβλιοθήκη libgcj12, και αν το πρόγραμμά μας έχει γραφικά στοιχεία, επίσης η libgcj12-awt.
Μην ανησυχείτε! Οι βιβλιοθήκες αυτές είναι μικρές σε μέγεθος. Όσο για το δικό μας pc έρχονται πακέτο με τον gcj οπότε δε χρειάζεται καμία παραπάνω σκοτούρα!

Για να έχουμε μία πληρέστερη εικόνα, σε αυτό τον οδηγό θα χρησιμοποιώ παραδείγματα και με τους δύο compilers.



Επόμενο: Το πρώτο μας πρόγραμμα


Creative Commons License
Η εργασία υπάγεται στην άδεια Creative Commons Αναφορά-Παρόμοια διανομή 3.0 Ελλάδα
Τελευταία επεξεργασία από alkismavridis και 19 Μάιος 2012, 18:05, έχει επεξεργασθεί 10 φορά/ες συνολικά
Γνώσεις ⇛ Linux: Μέτριο┃ Προγραμματισμός: Java, Assembly, Fortran, μαθαίνω C/X11┃ Αγγλικά: Μέτρια
Λειτουργικό σε Η/Υ ϰ μοντέλο: Ubuntu 14.04 64-bit ┃ Τρόπος εγκατάστασης: Live USB
Προδιαγραφές ⇛ Desktop: Intel i5 2320 3.00GHz.┃ MotherBoard: Asus p8h61 -m pro
Προδιαγραφές ⇛ RAM: 4GB ┃ Τροφοδοτικό Corsair CX430

GPU: Intel 2nd Generation Core Processor Family Integrated Graphics Controller [8086:0102] {i915}
5 eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 06) ⋮ wlan0: 0b05:1723 ASUS WL-167G v2 802.11g Adapter [Ralink RT2571W]
Οθόνη Schaub Lorenz (Tv)
alkismavridis
punkTUX
punkTUX
 
Δημοσιεύσεις: 273
Εγγραφή: 18 Μαρ 2009, 18:46
Εκτύπωση

Re: Εισαγωγή στην Java

Δημοσίευσηαπό alkismavridis » 25 Απρ 2012, 23:28

Παιδιά καλησπέρα!
Θέλοντας να προσφέρω στην κοινότητα αποφάσισα να φτιάξω αυτό τον οδηγό.
Αν δεν τον έχω δημοσιεύσει με σωστό τρόπο πείτε μου!

Τα επόμενα κεφάλαια δεν είναι ακόμα όλα έτοιμα (έχω γράψει άλλο 1 προσ το παρόν).
Αναμένετε τη συνέχεια.

Φιλικούς χαιρετισμούς
Άλκης
Γνώσεις ⇛ Linux: Μέτριο┃ Προγραμματισμός: Java, Assembly, Fortran, μαθαίνω C/X11┃ Αγγλικά: Μέτρια
Λειτουργικό σε Η/Υ ϰ μοντέλο: Ubuntu 14.04 64-bit ┃ Τρόπος εγκατάστασης: Live USB
Προδιαγραφές ⇛ Desktop: Intel i5 2320 3.00GHz.┃ MotherBoard: Asus p8h61 -m pro
Προδιαγραφές ⇛ RAM: 4GB ┃ Τροφοδοτικό Corsair CX430

GPU: Intel 2nd Generation Core Processor Family Integrated Graphics Controller [8086:0102] {i915}
5 eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 06) ⋮ wlan0: 0b05:1723 ASUS WL-167G v2 802.11g Adapter [Ralink RT2571W]
Οθόνη Schaub Lorenz (Tv)
alkismavridis
punkTUX
punkTUX
 
Δημοσιεύσεις: 273
Εγγραφή: 18 Μαρ 2009, 18:46
Εκτύπωση

Re: Εισαγωγή στην Java

Δημοσίευσηαπό simosx » 26 Απρ 2012, 00:15

Μπράβο! Χρειαζόμαστε και μαθήματα Java. Αν καταφέρεις να γράφεις μια σειρά από μαθήματα, πιστεύω ότι θα μπορέσουμε να έχουμε και ενότητα Java στο φόρουμ.
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: Εισαγωγή στην Java

Δημοσίευσηαπό alkismavridis » 26 Απρ 2012, 00:45

Τέλεια! Το βάζω μπροστά (όσο προλαβαίνω, μέρα με τη μέρα θα χτιστεί!)

Έχω κάποια εμπειρία από εφαρμογές γραφικού περιβάλλοντος, άρα νομίζω μπορούμε να το φτάσουμε εώς εκεί!
:-)
Γνώσεις ⇛ Linux: Μέτριο┃ Προγραμματισμός: Java, Assembly, Fortran, μαθαίνω C/X11┃ Αγγλικά: Μέτρια
Λειτουργικό σε Η/Υ ϰ μοντέλο: Ubuntu 14.04 64-bit ┃ Τρόπος εγκατάστασης: Live USB
Προδιαγραφές ⇛ Desktop: Intel i5 2320 3.00GHz.┃ MotherBoard: Asus p8h61 -m pro
Προδιαγραφές ⇛ RAM: 4GB ┃ Τροφοδοτικό Corsair CX430

GPU: Intel 2nd Generation Core Processor Family Integrated Graphics Controller [8086:0102] {i915}
5 eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 06) ⋮ wlan0: 0b05:1723 ASUS WL-167G v2 802.11g Adapter [Ralink RT2571W]
Οθόνη Schaub Lorenz (Tv)
alkismavridis
punkTUX
punkTUX
 
Δημοσιεύσεις: 273
Εγγραφή: 18 Μαρ 2009, 18:46
Εκτύπωση

Re: Εισαγωγή στην Java - κεφ. 1

Δημοσίευσηαπό alkismavridis » 28 Απρ 2012, 20:10

Εννοείται ότι διορθώσεις σε οποιδήποτε επίπεδο, προτάσεις ή βοήθεια είναι ευπρόσδεκτες!!
Γνώσεις ⇛ Linux: Μέτριο┃ Προγραμματισμός: Java, Assembly, Fortran, μαθαίνω C/X11┃ Αγγλικά: Μέτρια
Λειτουργικό σε Η/Υ ϰ μοντέλο: Ubuntu 14.04 64-bit ┃ Τρόπος εγκατάστασης: Live USB
Προδιαγραφές ⇛ Desktop: Intel i5 2320 3.00GHz.┃ MotherBoard: Asus p8h61 -m pro
Προδιαγραφές ⇛ RAM: 4GB ┃ Τροφοδοτικό Corsair CX430

GPU: Intel 2nd Generation Core Processor Family Integrated Graphics Controller [8086:0102] {i915}
5 eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 06) ⋮ wlan0: 0b05:1723 ASUS WL-167G v2 802.11g Adapter [Ralink RT2571W]
Οθόνη Schaub Lorenz (Tv)
alkismavridis
punkTUX
punkTUX
 
Δημοσιεύσεις: 273
Εγγραφή: 18 Μαρ 2009, 18:46
Εκτύπωση

Re: Εισαγωγή στην Java - κεφ. 1

Δημοσίευσηαπό poscore » 28 Απρ 2012, 21:59

alkismavridis έγραψε:α δεν είναι ακόμα όλα

Have fun and we thank you :)
Άβαταρ μέλους
poscore
punkTUX
punkTUX
 
Δημοσιεύσεις: 153
Εγγραφή: 28 Απρ 2012, 17:21
Εκτύπωση

Re: Εισαγωγή στην Java - κεφ. 1 βοήθεια ... ειμαι αρχαριος..

Δημοσίευσηαπό neos user » 20 Μαρ 2014, 21:47

Ορίστε την κλάση κύκλος Circle ο οποίος έχει κέντρο με συντεταγμένες x, y και ακτίνα r.
Αναπτύξτε πρόγραμμα που δημιουργεί δύο στιγμιότυπα κύκλου με ακτίνα 2 και 5 αντίστοιχα
και τυπώνει στην οθόνη την περίμετρο και το εμβαδό του κάθε κύκλου..
neos user
babeTUX
babeTUX
 
Δημοσιεύσεις: 1
Εγγραφή: 20 Μαρ 2014, 21:08
Εκτύπωση

Re: Εισαγωγή στην Java - κεφ. 1

Δημοσίευσηαπό abramis » 21 Μαρ 2014, 02:58

δεν την καταλαβαίνω αυτή τη νοοτροπία ρε παιδί μου. σου λέει, λινουξ φορουμ είναι, ψαγμένοι θα ναι, μπαίνω γράφομαι, πετάω την εκφώνηση που με ενδιαφέρει και περιμένω έτοιμο το κώδικα. ούτε θέμα δεν άνοιξες. σε ubuntu φορουμ είσαι άμα δεν το πήρες χαμπάρι.
Κώδικας: Επιλογή όλων
public class Point {
int x;
int y;
public Point (int x2, int y2)
        {
         x = x2;
         y = y2;
}
public double ypologise()
        {
        return 0;
}
}

public class Circle extends Point {
int aktina;
public Circle(int x, int y, int r)
        {
         super(x, y);
         aktina = r;
}
public double ypologise()
        {
      return aktina * aktina * 3.14159;
}
}

τεσπα κάτι τέτοιο για το εμβαδό. κάνεις κάτι παρόμοιο και για τη περίμετρο και πας μετά στη main κλάση σου και βάζεις τα new σου και τα τυπώνεις εκεί μέσα.
1 Γνώσεις Linux: Μέτρια┃ Προγραμματισμού: Μέτρια ┃ Αγγλικών: Μέτρια
2 Ubuntu 20.04 focal 5.4.0-33-generic 64bit (el_GR.UTF-8, KDE plasma), Windows 10
3 AMD Ryzen 5 1400 Quad-Core Processor ‖ RAM 16021 MiB ‖ Gigabyte B450M S2H
4 Advanced Micro Devices, Inc. [AMD/ATI] Bonaire XTX [Radeon R7 260X/360] [1002:6658] {radeon}
5 enp8s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 16)
laptop:
Spoiler: show
Ubuntu 18.04 bionic 5.3.0-40-generic 64bit(GNOME gnome),Windows 10, Lenovo B50-80, Intel Celeron 3205U @ 1.50GHz, RAM 7902 MiB, Intel Broadwell-U Graphics [8086:1606] {i915}
Άβαταρ μέλους
abramis
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 757
Εγγραφή: 02 Αύγ 2011, 03:01
Τοποθεσία: Θεσ/νίκη
Launchpad: goldmetal
Εκτύπωση

Re: Εισαγωγή στην Java - κεφ. 1

Δημοσίευσηαπό Ilias95 » 21 Μαρ 2014, 19:04

Κακώς έδωσες κώδικα.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Εισαγωγή στην Java - κεφ. 1

Δημοσίευσηαπό konnn » 21 Μαρ 2014, 23:19

Εντάξει, δε πειράζει που έδωσε.
Γενικότερα η πολιτική του φόρουμ είναι να μη δίνουμε έτοιμο κώδικα .Μπορούμε όμως να συμβάλουμε στην βελτίωση κάποιου.
1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3568
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

Επόμενο

  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Μαθήματα Java