Skocz do zawartości
plelektronpl

Nauka Javy

    Rekomendowane odpowiedzi

    Witam. Planuje nauczyć się programować i wiem, że przede mną długa droga, ale chciałbym się dowiedzieć czy opłaca uczyć się javy. Przecież żeby pisać na androida musiałbym najpierw nauczyć się "normalnej" javy komputerowej a dopiero później takiej pod androida- nie bardziej opłaca się zacząć uczyć c++, który przecież już działa na androidzie (2.2<). Czy c++ nie wyprze javy??? Jakieś ogólne pojęcie o pisaniu programów mam, ale nie znam tak naprawdę żadnego języka.

    P.S. Tak przy okazji jest coś jak GameMaker, ale pod androida? (appinventor znam)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    gzajac
    Przecież żeby pisać na androida musiałbym najpierw nauczyć się "normalnej" javy komputerowej a dopiero później takiej pod androida-

    To wciąż ta sama Java. Android SDK to w zasadzie tylko framework, ale cały czas używasz Javy SE.

    nie bardziej opłaca się zacząć uczyć c++, który przecież już działa na androidzie (2.2<). Czy c++ nie wyprze javy???

    W Androidzie na pewno nie wyprze. Łatwość i szybkość tworzenia aplikacji w Java + Android SDK jest główną siłą tej platformy.

    Jakieś ogólne pojęcie o pisaniu programów mam, ale nie znam tak naprawdę żadnego języka.

    Sam język to nie wszystko. Bardzo ważne jest dobre rozumienie aspektów programowania obiektowego. Bez tego wydaje mi się ani rusz.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Sam język to nie wszystko. Bardzo ważne jest dobre rozumienie aspektów programowania obiektowego. Bez tego wydaje mi się ani rusz.

    Wiem o tym że sama znajomość komend nie wystarcza i że potrzebny jest pewien "sposób myślenia". Ale dzięki za info na temat c++. Czyli zaczynamy nauke javy :D

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Czy c++ nie wyprze javy???

    Najpierw był C++, potem była Java. W związku z tym C++ nie wyprze Javy... bo java to nowszy język. Wybór to kwestia preferencji. C++ ma ogólnie większe możliwości, ale nie do wszystkiego jest "wygodny", poza tym nie wykorzystasz całego C++, gdyby chodziło o możliwości języka to proponowałbym Asemblera.

    Jeśli chodzi o mnie to zaczynałem w C++, pisałem kilka lat (świetnie sprawował się w pisaniu algorytmów itp.) i przeniosłem się na Jave (w między czasie był ActionScript 3.0, ale to zupełnie inna bajka).

    Jak masz czas to nie zaszkodzi Ci poznać obie składnie, a potem wybrać.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    gzajac
    Najpierw był C++, potem była Java. W związku z tym C++ nie wyprze Javy... bo java to nowszy język.

    Biorąc pod uwagę kontekst pierwszego posta w tym temacie, jasno wynika że kolega pytał o przypadek wyparcia Javy przez C++ w Androdzie...

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Biorąc pod uwagę kontekst pierwszego posta w tym temacie, jasno wynika że kolega pytał o przypadek wyparcia Javy przez C++ w Androdzie...

    Tak dokładnie o to mi chodziło :)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    W androidzie tylko krytyczne częsci tego systemu napisane są w c/c++, tam gdzie wymagana jest niezwykła szybkość. Aplikacje powinno tworzyć się w javie, gdyż te pisane w c++ i tak są tłumaczone na jave. Co prowadzi do zmniejszonej wydajności.

    Java nie jest taka wolna, szczególnie na androidzie gdzie jest tłumaczona do byte codu zoptymilizowanego specjalnie pod telefony i uruchamiana na wirtualnej maszynie Dalvik.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    gzajac
    gdyż te pisane w c++ i tak są tłumaczone na jave. Co prowadzi do zmniejszonej wydajności.

    Gdzie Ty takie rzeczy wyczytałeś? Jeśli w dokumentacji to bardzo proszę o linka...

    If you write native code, your applications are still packaged into an .apk file and they still run inside of a virtual machine on the device. The fundamental Android application model does not change.

    To wcale nie znaczy że są "tłumaczone" na Jave. Raczej na bytecode Dalvika a to są 2 różne rzeczy.

    Ten fragment dokumentacji mówi wiele (proszę zwrócić uwagę na pogrubienie):

    The NDK will not benefit most applications. As a developer, you need to balance its benefits against its drawbacks; notably, using native code does not result in an automatic performance increase, but always increases application complexity. In general, you should only use native code if it is essential to your application, not just because you prefer to program in C/C++.

    Typical good candidates for the NDK are self-contained, CPU-intensive operations that don't allocate much memory, such as signal processing, physics simulation, and so on. Simply re-coding a method to run in C usually does not result in a large performance increase. When examining whether or not you should develop in native code, think about your requirements and see if the Android framework APIs provide the functionality that you need. The NDK can, however, can be an effective way to reuse a large corpus of existing C/C++ code.

    Edytowane przez gzajac

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    If you write native code, your applications are still packaged into an .apk file and they still run inside of a virtual machine on the device. The fundamental Android application model does not change.

    To wcale nie znaczy że są "tłumaczone" na Jave. Raczej na bytecode Dalvika a to są 2 różne rzeczy.

    Fragmenty programu napisane w C/C++ nie są kompilowane do bytecode'u Dalvika, tylko bezpośrednio do kodu maszynowego. Do bytecode'u Dalvika kompilowane są programy napisane w Javie. Ten fragment dokumentacji wskazuje raczej na fakt, iż programy (a w zasadzie fragmenty programów) napisane w C/C++ nie mogą być rozpowszechniane samodzielnie, bo tak czy inaczej trzeba je opakować Javą i wołać poprzez JNI z programu działającego pod nadzorem VM Dalvika.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    gzajac
    Fragmenty programu napisane w C/C++ nie są kompilowane do bytecode'u Dalvika, tylko bezpośrednio do kodu maszynowego.

    Możliwe że jest tak jak piszesz. Ja napisałem "Raczej na bytecode" bo nie zgłębiałem tematu :)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x