Autor Wątek: Czy warto?  (Przeczytany 4665 razy)

Offline eMul

  • Użytkownik

# Grudzień 28, 2006, 11:54:33
Znam C++ i chciałbym się zapytać czy wrto sie uczyć Javy. Myślałem jeszcze nad C#, ale niestety tu są problemy z tą wieloplatformowością, poza tym więcj osób ma zainstalowaną Javę niż Frameworka. Niestety pojawia się problem taki, że Java jest wolna. Czy warto się jej uczyć? Do czego może się przydać?

Offline Mr. Spam

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

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

# Grudzień 28, 2006, 12:35:56
To czy warto się jej uczyć to zależy właśnie od tego, do czego ma Ci się przydać.

Ogólnie Javę warto znać, bo to język popularny i przydatny w życiu i w pracy. Z drugiej strony C++ jest chyba jeszcze ważniejszy, jeszcze popularniejszy i jeszcze bardziej potrzebny, przynajmniej na rozmowach kwalifikacyjnych.

W Javie można kodzić niezależne aplikacje, można programy i gry na komórki, można aplety na strony WWW, można wreszcie servlety. Nie znam się na tym za bardzo i nie wiem jak bardzo Java liczy się w tych poszczególnych zastosowaniach, ale jedno wiem napewno - jak sam przyznałeś, jest wolna. Dlatego nawet zwykłe programy użytkowe napisane w niej działają koszmarnie (na szczęście nie ma ich zbyt wiele), a gier w Javie praktycznie się nie pisze.

Jeśli natomiast chodzi o temat Java kontra .NET, to sam podałeś najważniejszy argument i różnicę - Java jest przenośna, a .NET raczej nie. Dlatego jeśli to jest dla Ciebie ważne, wybór jest raczej oczywisty.

Ja rozważałem przesiadkę na C# ale ostatecznie zostaję przy C++.

Offline pawelad

  • Użytkownik
    • strona domowa

# Grudzień 28, 2006, 13:24:49
Java w domu jest nie do wykorzystania, super się w niej pisze dla internetu, ale nigdzie nie znajdziesz darmowego hostingu więc lepiej PHP5. Do gier sie nie nadaje tutaj c++ rządzi. Do zwyklych programow na  gui też lipa bo wolne toto,  lepiej postaw na  c#, poczujesz moc, ale to tylko i aż pod windą.

truman

  • Gość
# Grudzień 28, 2006, 13:47:23
A) Właśnie zainstalowałem JDK 1.6 - jest znacznie szybsze (głównie właśnie GUI). Pisanie programów użytkowych jakby nabrało więcej sensu.
B) Jest językiem numer jeden w aplikacjach server-side dla biznesu (dużego).
C) Gier w Javie napisanych jest niewiele (a z poważnych to żadna). Do gier się nie nadaje (pomijam J2ME - to zupełnie inna historia).

Offline eMul

  • Użytkownik

# Grudzień 28, 2006, 13:53:24
A czy bardzo się różni pisanie na komórki od pisania na kompa?

Offline really

  • Użytkownik

# Grudzień 28, 2006, 14:05:03
A czy bardzo się różni pisanie na komórki od pisania na kompa?
Pisanie na komorki jest duzo bardziej wkurzajace i uciazliwe (zwlaszcza gier). :)

Offline TPJ

  • Użytkownik

# Grudzień 28, 2006, 14:25:30
Wiem, że mi się oberwie od wyjadaczy C++ (których na tym forum nie brakuje) za tę wypowiedź, ale mam to...

Rzućcie okiem na ten benchmark. IMO Java nie jest wolna - Java jest wystarczająco szybka. Pozostaje tylko kwestia, do czego.

Jeśli dla kogoś gry = silniki 3D, no to rzeczywiście Java odpada. Ale jak ktoś chce pisać prostsze gry (2D), albo takie, które nie wymagają superwydajnego 3D (np. strategiczne), to Java się świetnie do tego celu nadaje. Przynajmniej takie jest moje zdanie.

Z moich własnych doświadczeń (Celeron 800 MHz + 256 MB RAM) wynika, że jedyna zauważalna różnica pomiędzy Javą i C/C++ jest w szybkości uruchamiania się aplikacji oraz w ich pamięciożerności.

Z punktu widzenia developera mogę dodać jeszcze jedną różnicę - w Javie pisze się znacznie szybciej (wliczam w to zarówno czas tworzenia kodu, jak i czas poświęcony na przenoszenia aplikacji na inny system operacyjny).

Java do gier? Warto rzucić okiem na to:

http://www.javagaming.org/forums/index.php
http://lwjgl.org/
http://sdljava.sourceforge.net/

Offline Charibo

  • Redaktor

# Grudzień 28, 2006, 14:44:43
Cytuj
Myslałem jeszcze nad C(...), poza tym więcj osób ma zainstalowana Javę niż Frameworka.

IMO wiekszosc osob ma .NET Frameworka, chocby dlatego ze instaluje sie z SP2 i bez niego duzo popularnych aplikacji nie dziala.

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

# Grudzień 29, 2006, 10:10:13
Mój kolega siedzący w klimatach linuksowych i Open Source powiedział mi, że jakieś 2 miesiące temu firma Sun udostępniła źródła wirtualnej maszyny Javy otwierając ją na modyfikacje dla ludzi. Jego zdaniem to duży krok naprzód i duża przewaga nad .NET-em, która zaowocuje powstaniem kompilatorów do innych języków dla kodu Javy, przyspieszeniem wirtualnej maszyny, powstaniem wielu innych dodatków i narzędzi oraz ogólnym rozwojem platformy. Ja nie byłbym tak optymistyczny co do potencjału, który taki krok ze sobą niesie, ale fakt jest godny odnotowania.

truman

  • Gość
# Grudzień 29, 2006, 10:37:03
Gdy pytasz czy warto... Nie ma rzeczy najlepszych obiektywnie. Później rodzą się flamewary. Ogólnie mogę odpowiedzieć - warto. Umiesz c++ więc to kwestia znalezienia samouczka "java dla znających c++" zajmuje to stronę maszynopisu i po 15 minutach umiesz javę. Przynajmniej w moim przypadku tak było. Java to C++ bez naleciałości C i z gotowym zarządzaniem pamięci. Reszta to już tylko api którego się nie uczysz tylko korzystasz na bierząco to co Ci potrzebne.
Co do powolności javy to jest jedna z krążących legend miejskich - po prostu tak się przyjęło mówić wśród ludzi nie znających tematu i tyle. Powolny jest najczęściej swig (wyświetlaanie ui) i czasem automatyczne odśmiecanie pamięci. Jeżeli ktoś jednak zna dobrze javę potrafi nad tym zapanować i zminializować takie opóźnienia. Nie można zapominać o takich kompilatorach jak np. gcj który zamienia kod javy na zwykłego exe czy elf. Java to tylko koncepcja nie a w niej nic powolnego. "Zwyczjna" java suna tez kompiluje kod w dzisiejszych czasach i to co siedzi w ramie to prawie exek z technologią tzw. hot spotów. Jako ciekawostka - są też procesory ktore interpretują bytecode javy bezpośrednio.
Nowa Java 6 ma wiele ciekawych rozwiązań, np. nareszcie wbudowaną bazę danych JDBC - więc jeśli ktoś chce zrobić jakiś program biurowy to chyba nie ma lepszej i łatwiejszej platformy. Nic już nie trzeba instalować żadnych postgresów i żadnych zabugowanych sterowników łączących.

Co do gier - tu java może znaleźć naprawdę dobre miejsce. Kolejna rzecz która jest nierozumiana - bindingi javy. Jeżeli engine jest napisany np. w c++ a w javie są porobione tylko bindingi do metod C++ to de facto działa kod c++ i nie ma tu wielkich strat. Nie większych niż python czy inne języki skryptowe. Nic więc nie przeszkadza kiedy java może odpowiadać za pętlę główną a niektórzy zapominają że większość obliczeń w grze robi GPU który ma niewiele wspólnego z javą i jej mitologiczną "powolnością".

Offline eMul

  • Użytkownik

# Grudzień 29, 2006, 12:41:08
Przekonaliście mnie chłopaki :)
Jaką książkę wybrać. Co prawda C++ uczyłem się z neta i jakoś szybko poszło ;), ale z Javą już chyba wolałbym mieć wszystko w PL i ładnie poukładane.
To przykuło moją uwagę: http://helion.pl/ksiazki/jv2pod.htm
Czytałem przykładowy rozdział i chyba język mi odpowiada.

Czytałem też przykładowy rozdział z "Thinking in Java" i denerwuje mnie w tym lanie wody i tłumaczenie od podstaw np. OOP-u.

Offline nastach

  • Użytkownik

# Grudzień 29, 2006, 13:49:38
Co do javy to jest ona przyszloscia dla aplikacji intranetowych, j2ee jest poprostu do tego stworzone. To jest "kawałek" rynku gdzie java jest najlepsza i tam sie nieliczy czy jest szybka czy nie poprostu kupuje sie lepsze maszyny, ostatnio miałem przyjemnosc testowania aplikacji dla firmy logistycznej. Naprawde cos fajnego babka w dyspozytorni miala wszystko na PC(j2se) tak samo magazynier, kierowcy mieli na palmtopach co gdzie i o ktorej zawiesc a klient mogl sobie sprawdzic przez strone. To jest caly urok j2ee i javaBeans. www.e-point.pl jest przykladem firmy ktora walsnie sie w takie rzeczy bawi, wystarczy zobaczyc kto kozysta z ich uslug i odrazu wiadomo czy warto uczyc sie javy :)

Pozdrawiam

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

# Grudzień 30, 2006, 10:59:38
truman: Za przeproszeniem, kogo to obchodzi że gdzieś jest jakiś procesor który interpretuje ByteCode Javy. Podobnie z alternatywnymi implementacjami takimi jak gcj czy ta maszyna dołączana do dystrybucji Fedora Core, na której nie działa połowa programów w Javie. Liczy się to, co jest w praktyce stosowane. Nie trzeba być ekspertem żeby zainstalować sobie i poużywać choćby Azureusa czy jEdita i zobaczyć, jak koszmarnie to wszystko działa i ile pamięci zajmuje. Java nawet do programów zbytnio się nie nadaje, a co dopiero do gier. Ja rozumiem, że jakaś "duża firma" może sobie pozwolić na kupienie farmy potężnych pecetów i uruchamianie na niej całego softu napisanego w Javie, bo dla nich dodatkowy sprzęt przekłada się na dodatkową pracę i czas programistów piszących w mniej wygodnym języku - wszystko jest zamienne bo przeliczane na złotówki albo dolary - ale zwykły użytkownik ma trochę inne priorytety.

Offline vashpan

  • Użytkownik
    • Strona

# Grudzień 30, 2006, 11:27:49
Zgadzam sie ze regeditem... Ja tam nie neguje uzywalnosci Javy w pewnych projektach na pewnych platformach, ale dla zwyklego uzytkownika Java to katorga i strata cennych megabajtow pamieci...

Z ciekawosci zassalem sobie jEdit'a i zaraz po otwarciu zajmuje on 35 mb pamieci... Ja dziekuje, wole notepad++...


Offline Xion

  • Moderator
    • xion.log

# Grudzień 30, 2006, 11:53:10
Java jest używana za język do zastosowań internetowych i tam sprawdza się najlepiej. Aplety, servlety, JSP - tam błyszczy najbardziej. Oczywiście trudno negować to, że szybkość działania VM Javy jest coraz lepsza (i pewnie jeszcze polepszy, gdy jej źródła zostaną upublicznione), ale chyba jeszcze sporo czasu minie, nim aplikacje napisane w tym języku będą stanowiły więcej niż kilka procent używanych w komputerach domowych.
Natomiast J2ME to zupełnie inna sprawa - widać w okrojonej wersji Java sprawuje się o wiele lepiej ;)