Witam,
Interesuje mnie jakie są główne zastosowania Javy? Jakiego typu soft głównie się pisze w Javie (np. strony webowe, aplikacje użytkowe itp)?
Czy jest jakaś lista w której są wymienione aplikacje napisane w Javie (dla C++ taką listę znalazłem, dla Javy jakoś nie widzę)
Aplikacje mobilne, aplikacje przenośne (niezależne od platformy), obsluga portali internetowych (JSP, itp), aplikacje korporacyjne, narzedzia...
Jedynie gier o wysokich wymaganiach w tym nie napiszesz, bo by dzialaly za wolno.
@up - zapomniałeś o najważniejszym, w Javie piszę się programy w javaszkołach :)
Gier w Javie się nie pisze ponieważ nie ma np sprzętowego wsparcia dla sprawdzania granic tablic, a komunikacja z opengl odbywa się poprzez ślamazarne jni. Podobno w takim C#owym XNA da się pisać dość wydajne aplikacje C# + DirectX Managed. Gdyby OpenGL był wbudowany w Javę to wtedy w Javie można by tworzyć mniej skomplikowane gry (aplikacje w Javie zużywają dużo więcej pamięci niż natywne).
donkey7 napisał(a)
Gier w Javie się nie pisze ponieważ nie ma np sprzętowego wsparcia dla sprawdzania granic tablic, a komunikacja z opengl odbywa się poprzez ślamazarne jni. Podobno w takim C#owym XNA da się pisać dość wydajne aplikacje C# + DirectX Managed. Gdyby OpenGL był wbudowany w Javę to wtedy w Javie można by tworzyć mniej skomplikowane gry (aplikacje w Javie zużywają dużo więcej pamięci niż natywne).
Czasem zamiast pisac glupoty lepiej nic nie pisac. Gry w javie tworzy sie na platformy mobline i to w duzych ilosciach. Jni wcale nie jest bardziej slamazarne niz C# i jedyna przewaga C# jest tutaj mozliwosc pisania na xbox'a. W javie da sie pisac rowneiz gry komputerowe na pc i pare takich powstalo(runescape, wurm online i pare innych) i predkosc dzialania wcale nie jest tutaj przeszkoda.
W ramach ciekawostki paru osobom sie chcialo przeportowac silnik quake II na jave i jest on w zasadzie rownie wydajny co wersja napisana w c: http://bytonic.de/html/benchmarks.html .
Wracajac do tematu posta w javie glownie pisze sie nudne aplikacje webowe i wybierajac te droge to jest najbardziej prawdopdobona sciezka kariery ;).
Wracajac do tematu posta w javie glownie pisze sie nudne aplikacje webowe i wybierajac te droge to jest najbardziej prawdopdobona sciezka kariery
Patrząc globalnie pewnie masz rację. Ale nie oznacza to, że nie ma firm, które w Javie robią ciekawe projekty. W Javie pisze się obecnie całkiem dużo kodu do zastosowań naukowych (np. CERN, NASA), jak również dużo innowacyjnych projektów (Google ma ok. połowy rzeczy na Javie, w tym AdWordsy i GMail).
Gier w Javie się nie pisze ponieważ nie ma np sprzętowego wsparcia dla sprawdzania granic tablic
LOL.
Gdyby OpenGL był wbudowany w Javę to wtedy w Javie można by tworzyć mniej skomplikowane gry
O JOGLu słyszał?
aplikacje w Javie zużywają dużo więcej pamięci niż natywne
Proszę o linka do artykułu w recenzowanym czasopiśmie albo uzasadnienie. Inaczej to czcze gadanie.
Owszem, można zgodzić się, że wymagają te kilka MB więcej na runtime JVM. Ale co to jest kilka MB jak obecnie większość ludzi ma GB w swoich maszynach, a sam OS pożera setki MB.
http://shootout.alioth.debian.org/u64q/benchmark.php?test=binarytrees&lang=all
Wystarczy wybrać dowolny benchmark - programy w Javie zajmują ok 5x więcej pamięci niż te w C++ (np zamiast 100 MiB zajmują 500 MiB).
Kod w którym jest dużo odwołań do elementów tablic jest wyraźnie wolniejszy w Javie, nawet kilkadziesiąt procent (z wyjątkiem jakichś egzotycznych kompilatorów optymalizujących takie odwołania). Jak ktoś chce to mogę poszukać stosownych porównań.
luser:
Java w tym zestawieniu jest "szybsza" bo kod Javowy jest lepiej napisany niż ten w C - ten w C jest bardzo stary.
Gier w Javie się nie pisze ponieważ nie ma np sprzętowego wsparcia dla sprawdzania granic tablic
LOL. Nie ma czegoś takiego jak 'sprzętowe' sprawdzanie granic tablic. W C++ w ogóle nie ma sprawdzania indeksów: gdy odwołasz się poza zakres tablicy to albo dostaniesz segfaulta (gdy odwołasz się poza pamięc przydzieloną dla procesu) albo nadpiszesz sobie kawałek pamięci używanej przez twój program.
Dostęp do tablic jest tylko dlatego wolniejszy, że Java sprawdza indeksy a C/C++ tego nie sprawdza.
donkey7 napisał(a)
http://shootout.alioth.debian.org/u64q/benchmark.php?test=binarytrees&lang=all
Wystarczy wybrać dowolny benchmark - programy w Javie zajmują ok 5x więcej pamięci niż te w C++ (np zamiast 100 MiB zajmują 500 MiB).Kod w którym jest dużo odwołań do elementów tablic jest wyraźnie wolniejszy w Javie, nawet kilkadziesiąt procent (z wyjątkiem jakichś egzotycznych kompilatorów optymalizujących takie odwołania). Jak ktoś chce to mogę poszukać stosownych porównań.
No to wyzywam Cie znajdz kod w ktorym kod odwolania do talibc sa w javie o kilkadziesiat procent wolniejsze niz w c++. Czekam.
rnd napisał(a)
Nie ma czegoś takiego jak 'sprzętowe' sprawdzanie granic tablic.
Mhm, wolna jak cholera i starsza niż 90% użytkowników tego serwisu instrukcja bound? Może i mało użyteczna, ale istnieje.
rnd napisał(a)
W C++ w ogóle nie ma sprawdzania indeksów
Mhm, tylko w czystych tablicach, wszelkie kontenery jak najbardziej to oferują. FFI (JNI, unsafe etc.) pozwala na dostęp do pamięci poprzez pointery - masz te swoje 'tablice' z C++.
rnd napisał(a)
Dostęp do tablic jest tylko dlatego wolniejszy, że Java sprawdza indeksy a C/C++ tego nie sprawdza.
Mhm, VM ma piękną przewagę nad C++ - może oferować sprawdzenia i eliminować je kiedy poprawność indeksów będzie zagwarantowana, aplikacja natywna albo zawsze będzie sprawdzać albo nigdy.