Autor Wątek: Kilka pytań dotyczących javy  (Przeczytany 10010 razy)

Offline Rokuzo

  • Użytkownik
    • Masz na sprzedaż klucze do cs go?

# Sierpień 13, 2010, 22:51:44
Witam ...
Chciałbym się Was zapytać o kilka rzeczy związanych z Javą.

1.Java to maszyna wirtualna -> Java SE to standardowa wersja Javy -> Java EE to dodatkowe klasy Javy bazujące na wersji SE dodające kilka możliwości -> Java ME to wersja klas javy przeznaczonych na urządzenia mobilne -> JavaFX to język skryptowy mający mniej więcej takie możliwości (z założenia) jak Flash czy Silverlight ?
Jeżeli coś tutaj się nie zgadza to proszę poprawcie mnie ;) (trudno było mi się połapać w tych nazwach i pojęciach a na każdej stronie piszą co innego ;p)

2.Czy warto się uczyć Javy (a dokładnie JavyME znanej jako J2ME) ? (Co do wydajności to wiem, że wcale wolna Java nie jest a podobno czasem szybsza niż c++ ;p).

3.Czy może jednak pozostać przy C++/WinApi/DirectX ?

4.Pytam się głównie z ciekawości bo mam możliwość nauki JavyME (posiadam książkę).

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Minus

  • Użytkownik

# Sierpień 13, 2010, 23:13:23
2.Czy warto się uczyć Javy (a dokładnie JavyME znanej jako J2ME) ? (Co do wydajności to wiem, że wcale wolna Java nie jest a podobno czasem szybsza niż c++ ;p).
ME? Nie, nie jest :)

http://www.youtube.com/watch?v=A-Rp6wMZ1-s

Offline Avaj

  • Użytkownik

# Sierpień 13, 2010, 23:18:23
Jak chcesz to się ucz. Ja tam Javę całkiem lubię, ma niestety też parę rzeczy, których brakuje mi z C++a (a konkretnie ich nie ma) np. przeciążanie operatorów i szablony.

Offline Xion

  • Moderator
    • xion.log

# Sierpień 13, 2010, 23:52:00
Czy Java ME przypadkiem nie zdycha słuszną śmiercią od czasu, gdy upowszechniły się bardziej zaawansowane platformy mobilne (iOS, Android, nowy system od Nokii)?...

Offline MadBonsai

  • Użytkownik
    • Ifrit

# Sierpień 14, 2010, 00:41:19
1.Java to maszyna wirtualna -> Java SE to standardowa wersja Javy -> Java EE to dodatkowe klasy Javy bazujące na wersji SE dodające kilka możliwości -> Java ME to wersja klas javy przeznaczonych na urządzenia mobilne -> JavaFX to język skryptowy mający mniej więcej takie możliwości (z założenia) jak Flash czy Silverlight ?
Jeżeli coś tutaj się nie zgadza to proszę poprawcie mnie ;) (trudno było mi się połapać w tych nazwach i pojęciach a na każdej stronie piszą co innego ;p)
Flash i Silverlight nie są nazwami języków skryptowych, a technologii składających się z paru rzeczy więcej, więc nie da się tego bezpośrednio porównywać. Tym bardziej, że siłą Flasha (tudzież AIR, Flex, ActionScript) są mocno rozwinięte narzędzia developerskie. JavaFX dorobiła się wsparcia w IntelliSense NetBeansa (może i Eclipse, nie sprawdzałem), paru prostych narzędzi i nic więcej. Język sam w sobie bardzo fajny, ale nic poza tym ;)

Offline Rokuzo

  • Użytkownik
    • Masz na sprzedaż klucze do cs go?

# Sierpień 14, 2010, 10:01:36
Aha no ok dzięki za odpowiedzi. Co do zdychania JavyME przeciesz podobno można ją uruchomić na iphonie, androidzie itp ^^.A ten filmik też fajny jest. Nie no ogólnie kilku rzeczy się dowiedziałem, dzięki.

Offline counterClockWise

  • Użytkownik

# Sierpień 14, 2010, 10:35:24
Aha no ok dzięki za odpowiedzi. Co do zdychania JavyME przeciesz podobno można ją uruchomić na iphonie, androidzie itp ^^.A ten filmik też fajny jest. Nie no ogólnie kilku rzeczy się dowiedziałem, dzięki.

To niestety prawda. JavaME zdycha, można ją uruchomić, ale programistów JavaMe rynek już prawie wcale nie szuka.
Popyt na programistów danego języka to całkiem znośna miara oceny jego żywotności. Owszem, istnieją jeszcze firmy celujące w stare telefony, albo potrzebujące ludzi do zarządzania istniejącymi już produktami, ale to brzmi mało przyszłościowo.

Na takim iPhonie na samym początku nie można było uruchomić J2ME, poza tym jakie ma szanse przeciwko aplikacjom napisanym na jego natywnym API? 

Offline Wyszo

  • Użytkownik

# Sierpień 14, 2010, 21:59:05
Jak chcesz to się ucz. Ja tam Javę całkiem lubię, ma niestety też parę rzeczy, których brakuje mi z C++a (a konkretnie ich nie ma) np. przeciążanie operatorów i szablony.

Szczerze mówiąc też mi tego brakowało... nawet na jednej z rozmów kwalifikacyjnych prowadziłem dyskusję na temat "co mi się nie podoba w Javie i dlaczego".

Brakowało mi tych rzeczy... dopóki nie zacząłem na poważnie pracować (czyli od bardzo niedawna). Im prostszy kod, tym łatwiejszy do utrzymania. Jasne, przeciążenie operatorów - fajna sprawa, ale daje pole do popełniania błędów i komplikuje kod klas. A poprawianie cudzych błędów nie jest fajne - im mniej możliwości do ich popełnienia, tym lepiej dla wszystkich. Prawdę mówiąc jak kodzi się w grupie, to najlepiej, żeby nie było żadnych wskaźników, template'ów, a cały kod był wykonywany sekwencyjnie (żadnych elementów współbieżnych) ;)

Offline kamykadze

  • Użytkownik

# Sierpień 16, 2010, 15:40:30
Chyba rzeczywiście JavaME jest w fazie schyłkowej. Moim zdaniem jej główne zastosowanie to pisanie prostych aplikacji z nadzieją, że pójdą na dużej liczbie telefonów/smartfonów ( poza Androidem i iPhonem wszystkie istotne platformy mobilne jeszcze wspierają JavęME ) lub pisanie pod starsze modele telefonów. Za kilka lat nie będzie przydatna, chyba że Sun/Oracle dokona jakiegoś cudu (w co nie wierzę...).

Ale nauczyć się można, bo:
- technologia jest bardzo prosta,
- przy okazji nauczysz się Javy (okrojonej, ale jednak), co może Ci się przydać gdzie indziej.

Offline MadBonsai

  • Użytkownik
    • Ifrit

# Sierpień 16, 2010, 15:47:28
Ale nauczyć się można, bo:
- technologia jest bardzo prosta,
- przy okazji nauczysz się Javy (okrojonej, ale jednak), co może Ci się przydać gdzie indziej.
Np. przy aplikacjach na Androidy  ::)

Offline kamykadze

  • Użytkownik

# Sierpień 16, 2010, 16:10:32
Ale nauczyć się można, bo:
- technologia jest bardzo prosta,
- przy okazji nauczysz się Javy (okrojonej, ale jednak), co może Ci się przydać gdzie indziej.
Np. przy aplikacjach na Androidy  ::)

Chyba że Oraclowi uda się to:
http://www.scribd.com/doc/35811761/Oracle-s-complaint-against-Google-for-Java-patent-infringement

;)

Offline krychu88

  • Użytkownik

# Sierpień 16, 2010, 16:17:50
Tylko chciałem dodać, że co prawda szablonów takich jak w c++ nie ma, ale za to są typy generyczne. Co prawda akurat w J2ME tego nie ma, ale generalnie w Javie jest (w Androidzie też).

Offline JasonVoorhees

  • Użytkownik
    • FotoGry

# Sierpień 16, 2010, 17:29:47
http://www.youtube.com/watch?v=1JZnj4eNHXE - ten filmik o Javie jest dobry :D

Co do samej Javy... Co kto lubi. Ja np. nie przepadam za Javą, chociaż mało w niej robiłem, to raczej działała na mnie odpychająco... Tam wszystko to przerost formy nad treścią. Przykładowo mam sobie Google App Engine i robię w nim aplikację internetową (czyli stronka z jakimiś tam mechanizmami, jak chociażby Shoutbox). No i jako, że wcześniej robiłem w Google App Engine pod Python'em, to myślałem, że niewiele się będzie to różniło i równie łatwo mi przyjdzie pisanie aplikacji. Nic bardziej mylnego, w Google App Engine konkretną tabelę w bazie danych definiujemy jako klasę z odpowiednimi polami. W Javie trzeba tam się babrać z jakimiś adnotacjami, dodać gettery i settery, obsługę do tej klasy trzeba też pisać - zero intuicyjności. Tak wygląda przykładowa klasa tabeli z mojego jednego projektu w Javie:
Kod: (java) [Zaznacz]
package jpastebin;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.PrimaryKey;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import com.google.appengine.api.datastore.Key;


@PersistenceCapable
public class Czlowiek {
@PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key;
@Persistent
private String nazwisko;
@Persistent
private String imie;
@Persistent
private String telefon;
public Czlowiek(String nazwisko, String imie, String telefon) {
        this.setNazwisko(nazwisko);
        this.setImie(imie);
        this.setTelefon(telefon);
}
public void setNazwisko(String nazwisko) {
this.nazwisko = nazwisko;
}
public String getNazwisko() {
return nazwisko;
}
public void setImie(String imie) {
this.imie = imie;
}
public String getImie() {
return imie;
}
public void setTelefon(String telefon) {
this.telefon = telefon;
}
public String getTelefon() {
return telefon;
}
}
Do takiej tabelki jeszcze trzeba napisać klasę obsługującą:
Kod: (java) [Zaznacz]
package jpastebin;
import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManagerFactory;

public final class PMF {
    private static final PersistenceManagerFactory pmfInstance =
        JDOHelper.getPersistenceManagerFactory("transactions-optional");

    private PMF() {}

    public static PersistenceManagerFactory get() {
        return pmfInstance;
    }
}
A tak wygląda dodanie nowego wpisu do tej tabelki:
Kod: (java) [Zaznacz]
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
Czlowiek czlowiek=new Czlowiek(req.getParameter("nazwisko"), req.getParameter("imie"), req.getParameter("telefon"));
PersistenceManager pm = PMF.get().getPersistenceManager();
///*
try {
            pm.makePersistent(czlowiek);
        } finally {
            pm.close();
        }//*/
}

W Python'ie z użyciem tej samej technologii (Google App Engine) tak wygląda deklaracja tabelki:
Kod: (python) [Zaznacz]
from google.appengine.ext import db
from Lista_podstron import Lista_podstron
class Pojedyncza_strona(db.Model):
nazwa = db.StringProperty(multiline=False)
zawartosc = db.TextProperty()
data_modyfikacji = db.DateTimeProperty(auto_now=True)
opis = db.TextProperty()
A tak wygląda dodawanie wpisu do niej:
Kod: (python) [Zaznacz]
ps=Pojedyncza_strona()
ps.nazwa="jakas nazwa"
ps.zawartosc="jakas tresc"
ps.opis="jakis opis"
ps.put()
« Ostatnia zmiana: Sierpień 16, 2010, 17:33:29 wysłana przez JasonVoorhees »

Offline Liosan

  • Redaktor

# Sierpień 16, 2010, 17:36:44
W Javie trzeba tam się babrać z jakimiś adnotacjami, dodać gettery i settery, obsługę do tej klasy trzeba też pisać - zero intuicyjności.
To kwestia JDO, w JPA ani Hibernate takiej potrzeby nie ma, a wykonanie zapisu do bazy to mniej więcej:
entityManager.persist(czlowiek) W ogóle przykłady są tendencyjne, bo kodzie pythonowym tworzyć "foo" "bar", a w Java'owym wyciągasz dane z requestu. No ale adnotacje, gettery i settery nadal trzeba dodawać; i straszne on ma jakieś fanaberie na ten temat.

Liosan

Offline JasonVoorhees

  • Użytkownik
    • FotoGry

# Sierpień 16, 2010, 18:08:18
Przykłady wyglądają na tendencyjne dlatego, że Pythono'wy z głowy pisałem, a Javowy kopiowałem z malutkiego projektu, który kiedyś pisałem ;)