Czy warto uczyć się Javy?

0

Czy warto uczyć się Javy. Znam już C++ i przyszła mi chęć na Javę lub C#.
Mam dylemat bo C# nie jest wieloplatformowy (na razie), a Java jest, ale za to jest też wolna. Moje pytanie jest następujące: Czy warto uczyć się Javy? Jak wypada ona na tle innych języków? Co mi daje znajomość Javy? Czy może się przydać do czegoś konkretnego lepiej niż inne języki?

0

Zajrzyj tu na opis Javy czy C#
Jaki język programowania wybrać#

0

To niezbyt mi pomogło.

0

Ucz się tego i tego. :P
Składniowo Java i C# są bardzo podobne, bardziej niż C# z C++.
Wybór powinien dotyczyć platformy, czy masz zamiar pisać pod .NETa czy pod platformę Javy.
Jako, że ja siedze teraz w .NET'cie subiektywnie wskaże na C# i .NET ;)

A tak w ogóle... jak ktoś mi kiedyś powiedział, piszesz w tym czego życzy sobie pracodawca ;)

0

Co do szybkosci aplikacj, to powolnosc Javy jest przereklamowana. Fakt, jest wolniejsza niz c++, asembler, czy fortran. Ale przede wszystkim w ogolnych zastosowaniach nie jest wolniejsza o 100-200% a jakies 10%, a czasem szybsza. Wszystko zalezy od tego jak sie napisze aplikacje. W Javie chodzilo o to by byla przenaszalna (nie tak jak asm, czy c++), by byla bezpieczna i zwalniala programiste z myslenia o wielu rzeczach (vide brak wskaznikow, garbage collector, itp) i by sie szybciej w niej pisalo. Wszystkie te wymagania spelnia, wiec w ogolnosci jest dobrym wyborem. Tak naprawde pracodawce malo obchodzi, czy program dziala 10% wolniej niz w c++, jezeli on tego nie zauwaza (a bardzo czesto tak jest wlasnie). Jak dziala, to moze byc napisany nawet w fortranie, byleby nie czekal na napisanie go za dlugo i nie musial dokupywac za duzo sprzetu, oprogramowania, itp. Java w tym wypadku ma duzo lepszy start niz wiekszosc 'szybszych' jezykow.

IMO warto sie uczyc, bo przydac sie zawsze moze.

0

johny_bravo potrafisz pocieszyć człowieka :]
Jeśli na serio jakieś 10% to jedziemy z tym koksem ;)
Jaką ksiązkę polecacie. Bo czytając przykładowe rodziały zwróciłem uwagę na "Core Java 2" http://helion.pl/ksiazki/jv2pod.htm

Za to zawiodłem się na "Thinking In Java" przeczytałem rodział teoretyczny o programowaniu obiektowym i nie dość, że gość pierdzieli o niczym t ojeszcze tłumaczy OOP jak jakiejś dzidzi. Myślę, że jak ktoś sie bierze za javę to się zna już na C++/Delphi i wie co to OOP.

0

Ja widzialem pare dni temu taka zolta ksiazke w empiku tytulu nie pamietam. Na pewno "Java" ale nie wiem jaki autor, cena 59,9zl
ale była bardzo dobra

0

Java Core jest ok wyborem, mam czesc 2 i jestem zadowolony.

PS. Znam sporo luda, u ktorych Java byla pierwszym jezykiem, wiec 'gadka' o OOP nie jest glupim pomyslem.

0

a C# no najwieksze gowno, i spieprzona kopia JAVY. najgorszy jezyk, w jakim musialem pisac...
dla chetnych moge podac wiele przykladow...

pozdrawiam

0

To ja jestem chetny, bo pisze w nim sporo od roku i jestem mocno zadowolony. Do tego przymierzam sie do duzego projektu w tym jezyku i ASP.net, wiec chetnie uslysze zawczasu :)

PS. Najlepiej w nowym watku w dziale C#, zeby nie bylo offtopa. Przy okazji kogos tez moze interesowac.

0

1)assembler, C,C++,Java -> sa jezykami na wiele platform. Co bys powiedzial, gdyby Anglicy zabronili Ci mowic po angielsku? (wiem, ze jest Mono, ale jeszcze nie jest dobrze rozwiniete a poza tym sam fakt "jedynego slusznego systemu" jest smieszny)
2)Brak wymuszenia obslugi wyjatku - MUSISZ przesledzic w dokumentacji cala hierarchie klas aby dowiedziec sie czy przypadkiem cos nie sypnie Ci wyjatkiem (a co jesli nie masz dokumentacji??)
3)new i override przy metodach -> i znowu musisz sledzic hierarchie bo nie wiesz JAK ZACHOWA SIE METODA!
4) jak odroznisz czy klasa dziedziczy po innej czy implementuje interfejs? po literce "I"?? wolne zarty!
5)in, out, ref, kolekcje przez []!! istny balagan
6) enumerator?!
7) zbyt dyzo propertiesow, czesto bez sensu powprowadzane... np transakcje! to juz parodia ze transakcje przypisuje sie jako property do zapytania SQL!
8) delegatki, dodawanie += kilka razy dwoch metod. co sie stanie jesli zrobie -=??
9)eventy sa PUBLICZNYMI polami! tak, tak dodajemy InnaKlasa.jakisEvent+=mojaMetoda! a co sie stanie jesli wywolamy w InnaKlasa jakisEvent() i nie bedzie tam dodanych eventow? NULLPOINTEREXCEPTION! wywolanie metod daje nullpointera GOSH!
10)Skoro wszystko mozna wyklikac -> wezmy takiego wizarda do baz danych. Obsluguje oczywiscie Oracle'a i M$, a co z Postgresem? najlepszym SZBD open source? a sproboj wizardem nawiazac polaczenie z innym kompem?
11)Enumerator zamiast Iterator, StringBuilder zamiast StringBuffer i setki przykladow - nie wydaje Ci sie ze gdzies juz tego uzywales? to pomysly jak zwykle zerzniete (Zune,Xbox,Windows) i spieprzone - patrz subString ktory nie pobiera indexow start i end tylko start i DLUGOSC? tam WSZYSTKO musi sie nazywac inaczej niz w Javie ale robi prawie to samo... prawie. to jest irytujace :/

pozdrawiam

0

Ok, niestety musze sie zgodzic...

  1. Wszystkie, ktore pisalem byly docelowo na Wina, zazwyczaj XP, wiec problemu wieloplatformowosci nie mialem. Jakbym mial pisac na wiele to c++ albo java.
    2)Fakt, tez mnie to wkurza. Na szczescie przyzwyczailem sie nieco do msdn - oczywiscie w wersji na dysku, bo wersja netowa jest strasznie wolna.
  2. Osobiscie nie rozumiem po co new i override, skoro w innych jezykach mozna uniknac.
    Reszta - tez mam wrazenie, ze microsoft troche sie rozpedzil z roznymi tworami typu properties, atrybuty, in, out, ref, itp.
  3. -= usunie dany event z listy wywolania, o ile wiem.
  4. jedyne wizardy z jakich korzystam to wizardy do ustawiania elementow, bo ta reszta jest albo za bardzo ograniczona jak piszesz, albo i tak musze cos w kodzie zmieniac, albo jeszcze cos innego. Konczy sie i tak na poprawianiu dzialania w kodzie.
  5. Tu w 100% zgodnosc - w miare poznawania c# mialem to samo wrazenie.

Przyznam, ze wielu powodow wybrania tych rozwiazan nie rozumiem. Glownie dlatego, ze np. w c++ i javie pewne rozwiazania sa jasno wyjasnione i obrane na podstawie wytycznych dotyczacych jezyka. C++ ma byc szybki to ma wskazniki, java ma byc bezpieczna to ich nie ma, itp. A w c# to takie ani w ta ani w druga strone. Nie bedzie szybszy nic c++, bo poszedl w strone javy, nie bedzie bezpieczniejszy, a tym bardziej bardziej przenaszalny niz java. Mysle, ze tworcy nie za jasno okreslili sobie czym ten jezyk ma w ogole byc i na czym polega jego sila.

Niemniej jednak stwierdze troche co innego niz Ty. Nie wiem czemu tak jest, ale duzo lepiej mi sie pracuje z narzedziami do c# (web developer, #develop) niz z narzedziami do javy (np. eclipse). Mimo, ze eclipse jest potezny, to jakos tak tamte sa bardziej intuicyjne - przynajmniej dla mnie. Sam nie wiem z czego to wynika, bo wiele eclipsowi zarzucic nie moge.

Mnie osobiscie w c# pisze sie dobrze, w szczegolnosci zakochalem sie w asp.net, bo ma duzo zalet w stosunku do php (glownie wszystkie klasy pod reka, no i pelna obiektowosc).

0

Co do asp.net to jest miodzio ;) ale ale... czy pod javą nie można w podobny sposób tworzyć aplikacji web np. wykorzystując Java Studio Creator ?? Chyba też bedzie pracować się przyjemnie. Nigdy z tego nie korzystalem, ale z webcastow ktore widzialem, wydaje się sympatyczne jak tak mozna powiedzieć ;) Co do wyboru języka, to wybiera się platformę z jaką bedzię się pracowało i do czego jest się bardziej przychylnym, ale i tak warto uczyć się wszystkiego ;)

0
johny_bravo napisał(a)

Ok, niestety musze sie zgodzic...
8) -= usunie dany event z listy wywolania, o ile wiem.

hehe, to to wiem, ale jesli sa tam (bo moga) dwie te same metody, to ktora usunie? jest tu niejednoznacznosc...
poza tym ciesze sie ze sie ze mna zgaadzasz bo juz myslalem ze mam jakies uprzedzenia :P ...
prawda jesttaka, ze M$ chcial stworzyc konkurencje dla Javy (no bo przeciez nie mozna nie skopiowac tak dobrego pomyslu) jednak jak czas pokazuje M$ nie nadaje sie aby stworzyc cos logicznego i sprawnie dzialajacego - czasem sam pomysl to nie wszystko.

pozdrawiam

0
eximius napisał(a)
johny_bravo napisał(a)

Ok, niestety musze sie zgodzic...
8) -= usunie dany event z listy wywolania, o ile wiem.

hehe, to to wiem, ale jesli sa tam (bo moga) dwie te same metody, to ktora usunie? jest tu niejednoznacznosc...

Jak znam zycie to pewnie usunie obydwie (bo pasuja do wzorca), ale nie chce mi sie sprawdzac ;)

Ja pozostaje przy zdaniu, ze jesli c# to tylko do aplikacji windowsowych (z wygody tworzenia, o ktorej pisalem) i zdecydowanie asp.net. Czy w javie mozna tak latwo tworzyc stronki to nie wiem, bo nie mialem stycznosci z jsp jeszcze.

0
johny_bravo napisał(a)

Czy w javie mozna tak latwo tworzyc stronki to nie wiem, bo nie mialem stycznosci z jsp jeszcze.

... a myślałem, że miałeś i do wiem się jak to się je i jaka jest różnica ;)

0

JSP to tylko wierzchołek góry lodowej. Koncepcyjnie jest zbliżone do PHP czyli znaczniki + kod. Może być szybsze bo strony JSP są kompilowane, a nie interpretowane.
Do "stronek" nadaje się mniej więcej tak samo (pomijając dostępność hostingu, która jest oczywiście znacznie mniejsza)
To co stanowi główną różnicę to frameworki do budowy web aplikacji. W Javie jest ich mnóstwo i możesz je dowolnie dobierać w zależności od potrzeb i preferencji.

Dorzucę jeszcze jedną, moim zdaniem dosyć istotną, sprawę przy porównaniu Java vs .NET: koszty.
Wiem, że istnieją darmowe narzędzia do .NET i wersje Express ale do "prawdziwej roboty" potrzeba parę groszy (chodzi mi głównie o serwery aplikacji a nie IDE).
W przypadku Javy bez większych problemów możesz stworzyć np. portal wielkości onet.pl i zarabiać na nim kupę kasy nie wydając na oprogramowanie ani złotówki. Jednocześnie w każdej chwili możesz dokupić profesjonalny support albo przesiąść się na komercyjny serwer.

Mam dylemat bo C# nie jest wieloplatformowy (na razie), a Java jest, ale za to jest też wolna.
Java jest wolna w sensie Open Source :) Na pewno nie jest wolniejsza (mniej wydajna) niż C#, a różnica w stosunku do C++ jest niewielka i zależy od zastosowań.

Tym nie mniej nie zachęcam do nauki Javy. Zbyt duża konkurencja na rynku nie jest zdrowa :)

0

Fakt, koszty sa troche wieksze, bo mimo wszystko np. asp.net pewnie nie pojdzie na apache'u, tomcacie, itp. Ze strony programisty wprawdzie koszty sa praktycznie zerowe, ale po stronie wdrozeniowej juz nie do konca. Znam wprawdzie pare firm, ktore uparly sie na takie rozwiazania z jakiegos powodu (ktos pewnie kiedys szefowi ladna bajke sprzedal ;) ), mi pozostaje sie z tego powodu cieszyc ;)

0

z tego co sie orientuje to ASP.NET pojdzie na apachu, co do tomcata - to jest "tylko" kontener na servlety, ktory daje rade rowniez jako server ale nie do srodowisk produkcyjnych, ale najlepiej jest podpiac go jako modul do apacha i wtedy on zajmuje sie servletami i jsp a apache reszta - ponoc bardzo wydajne

0

Ooo, to mnie zaskoczyles... Pozostaje kwestia windowsa, bo projekt MONO na linuksa jeszcze nie jest wystarczajacy o ile wiem.

0

Mylisz sie, mono daje rade z ASP.NET juz od jakiegos czasu:
http://www.mono-project.com/ASP.NET

0

Poki co uzywam .net 2.0, ale dobrze wiedziec, ze w razie czego 1.1 w pelni obslugiwane. Dzieki :)

0
pikseloza napisał(a)

z tego co sie orientuje to ASP.NET pojdzie na apachu

?? a to ciekawe, bo z tego co wiem to na razie tylko IIS i ewentualnie Cassini... Baaaardzo bym sie zdziwil gdyby apache go obslugiwal

pozdrawiam

0

Widzę, że kolejny maniak Javy i zatwardziały DonKichot anty "majkrosoftowy" zawitał na forum.

Od paru dni znów niestety muszę klepać w Javie. Jest to chyba najbardziej nielogiczny język świata.
Jak parę lat temu pierwszy raz zasiadłem przed C#, to po paru minutach pisałem jakbym co najmniej poprzedni miesiąc klepał w tym języku, swój pierwszy projekt [dość rozbudowany, sporo SQL, XML, etc..] napisałem z przyjemnością i bez problemów.

Teraz zasiadłem znów przed Javą, z przymusu, 4 rok z rzędu nas tym językiem męczą na studiach :/ Obok kumpel, też wie co w trawie piszczy.. co chwila leciały wiąchy, co chwila coś nie było intuicyjnie wykonane, tylko na około, kosmicznie.. nazwy pokićkane jakby w mikser wpadły..
Chcę ustawić focus, szukam setFocus() nie ma... po przekopaniu manuala jest, grabFocus().
No to chcę wyświetlić datę na podstawie szablonu "HHss", kilka podejść na chłopski rozum, gdzie w innych językach już by działało, tu nie.. google -> o m g -> użycie 2 klas, 2 obiektów, i dopiero wywołanie metody na rzecz obiektu z parametrem obiektu drugiego, kto to wymyślał?

Przykładów można mnożyć..

Zdaję sobie sprawę, że w każdym języku są babole, w jednym mniej, w innym więcej.. ale umiem napisać średniozaawansowany projekt w kilkunastu językach, a tylko Java odrzuca mnie na kilometr, tylko przy niej rzucam wiąchami, tylko ona jest zakręcona jak ruski termos.
Mam nadzieję, że po studiach nigdy w życiu już nie będę musiał dotykać tego języka. Czego i Wam życzę :D

Houk!


<font size="1" color="grey">chcesz polemizować? pamiętaj, że powyższe to czysto subiektywna ocena.. moja i znajomych</span>

0

@Marooned, co do podanego przez ciebie przykładu to "problematyczność" wnika z koncepcji programowania obiektowego. Jeden obiekt, jedna grupa zadań. Formater służy do formatowania i niczego więcej. Dla mnie odrzucającą rzeczą w .NET jest koniecznosć pisania na "Jedyny słuszny system" oraz tragiczna jak na język programowania szablonowość. M$ dostarcza dużo fajnych bibliotek, wiele z nich można wyklikiwać przez Visuala jednak miałem nieprzyjemność debugować taki kod. Sieczka, której nie można zrozumieć, bo samemu się jej nie pisało w dodatku nieintuicyjne nazewnictwo wielu elementów. Dodatkowo to co pisał eximius o nazewnictwie i deklaracjach. Dostając obcy kod do np. refaktoringu umarłem pewien czas temu. Zanim doszedłem co do czego i dlaczego minął tydzień. Prosty programik to był w sumie. Wysyłał mailing.

Java jest prosta, nie ma tam miejsca na wymyślne kombinowanie w stylu ActiveX i zastanawianie się czy dana kontrolka uzyska akceptację w systemie czy też nie. Java to przyjazna architektura, ułatwiająca pracę nm. logiczny podział bibliotek i klas wg. zadań, które mają spełniać, nie ze względu na koncepcję "bo to się przyda". Prosty, zwięzły, kod kompilujący się do rozsądnych rozmiarów. Jak dla mnie wadą jest dość toporny sposób korzystania z kompilatora konsolowego, ale mam mavena i nie narzekam.

0

Witam,
Wg mnie warto sie uczyc JAVY , jezyk super dopracowany, u co najwazniejsze niesamowicie udokumentowany, po zatym wszystko jest za darmo. Potrzebujesz np obslugę pola JButton nie ma sprawy wpisujesz w google java jbutton tutorial i juz masz niesamowicie obszerna dokumentacje.
Wszystykie klasy sa super udokumentowane wszedzie pelno tutoriali. poza tym nowosc taka ze nawet ksiazki masz za darmo, pewnie kojarzysz wydanie Thinking in Java oczywiscie wersja angielska jest za darmo do sciagniecia z netu. Aby nauczyc sie jezyka nie trzeba ywadawac ani 1zl.
W przypadku platformy .NET juz sprawajest inna bo za wszystko trzeba bulic i dokumentacji jest o wiele mniej.
Zeby nie byc gołosłownym wpisujemy w google: thinking in java download i co mamy ?
Klikamy na pierwsza pozycje z gory i mamy http://www.mindview.net/Books/TIJ/ ksiazeczka cala do sciagniecia, nie piękne ?
Wg mnie JAVA ma super mozliwoscie a poza tym praca, jezeli potrafisz napisac aplikacje klient -server masz troche praktyki , dobrze sie czujesz w obiektowosci to mozesz liczyc w woj. poludniowych na kasę rzędu 5tys na reke spokojnie. W Wa-wie np kwoty kręcą sie w granicach 10tys. Mowie to z praktyki (nie swojej).

Tak z ciekawosci, jezeli sprawdzimy ilosc ofert w Polsce z javy to bedzie ok 250, a np w czechach ? Kraj o wiele mniejszy a prawie o polowe wiecej ofert, nie mowiac w Niemczech gdzie tych ofert jest 8 razy wiecej.

Takze warto sie uczyc JAVY , ja wlasnie zaczalem i nie zaluje.

0

Javy warto się uczyć chociażby daletgo, żeby pisać przenośne aplikacje. C# jako język jest lepszy, tylko, że nie jest przenośny i wątpie, żeby kiedykolwiek był. Do tego Java ma większe wsparcie w postaci bibliotek i frameworków (trudno się dziwić, w końcu jest dłużej na rynku).

0

czy moglbys podac argumenty przemawiajace za "C# jest lepszy"?
Ogolnie nie ma jezykow lepszych i gorszych - kazdy jest do innych zastosowan i jest mniej lub bardziej wkur** co w moim wypadku przy C# wynosi 100% a przy jave tylez samo poziom zadowolenia z pracy ;)

pozdrawiam

0

Mnie w C# denerwują propertiesy. Uważam, że gettery i settery w JavaBeans są dużo lepszym rozwiązaniem. Dziwne też według mnie jest te ponad 60 słów kluczowych. W Javie pojedyńcze słowo jest wykorzystywane kilka razy, a w C# do wszystkiego musi być oddzielne.
Sam nie wiem czemu, ale jakoś kocham Javę, a nie był to mój pierwszy język. Teraz nie mógłbym powrócić do C++, od któego zaczynałem. Z .NET miałem krótką przygodę (jakiś miesiąc) i uważam, że Java jest dużo lepsza (jako platforma i jako język).

A to całe Mono to jakaś pomyłka. Przenośne to są aplikacje konsolowe. Aby okienkowe prawidłowo działały trzeba używać innej biblioteki niż Windows.Forms, więc w wielu aplikacjach należy pisać aplikację prawie od zera. A w Javie mamy świetnego Swinga i zero problemów :)

0

Nie chcę zaczynać wojny który język jest lepszy. Napisze co mi się nie podoba w Javie, co ma C#:

  • podział na typy podstawowe i obiekty
  • w Javie nie ma typów unsigned. Pisząc funkcje haszujące dla protokołu gg nieźle się przez to musiałem napocić.
  • nie ma przeciążenia operatorów
  • w javie jest sporo niekonsekwnecji (np. to, że operator + w Stringu jest przeciążony chociaż ogółem nie można przeciążać)
  • brak operatora sizeof
  • denerwująca konwencja niesymetrycznych nawiasów klamrowych {
    }
  • ogólnie skopane przekazywanie przez wartość/referencje. Obiektów nie da się przekazać przez wartość, typów podstawowych nie da się przez referencje.

A reszta obleci...

1 użytkowników online, w tym zalogowanych: 0, gości: 1