Czy Java rzeczywiście jest taka super?

2

Jestem programistą Javy. W pracy i na różnych eventach programistycznych, w których uczestniczę, strasznie dużo osób spuszcza się nad cudownością Javy i jej wyższością nad innymi językami. Ja podchodzę do tego na chłodno i nie uważam zeby Java była lepsza lub gorsza od innych języków z któymi też miałem dość dużo do czynienia (np. C++, C#). Szczególną tendencje do zachwytów mają (przynajmniej w srodowisku w którym się obracam) programości z doświadczeniem poniżej 10 lat, ci starsi jakby się nie wypowaidają w tej kwesti.

Pytanie do ludzi z większym doświadczniem, nie tylko w Javie. Czy Jaca rzeczywiście jest lepsza i pod jakim względem od innych języków( ale pomijając kwestię wieloplatformowości, bo to często jedyny argument chwalących Jave) :)

7

0

0 expa w javie, ale to zawsze wygląda dziwnie:

@Java
@Jest
@Super
@XmlElementWrapper(name="orders")
@XmlJavaTypeAdapter(OrderJaxbAdapter.class)
@XmlElements({
   @XmlElement(name="order_2",type=Order2.class),
   @XmlElement(name="old_order",type=OldOrder.class)
})
@JsonIgnore
@JsonProperty
@NotNull
@ManyToMany
@DevNull({
@SuppressWarnings
@Autowired, 
@Inject, 
@Override,  
@XmlElementWrapper,
@XmlJavaTypeAdapter,
@XmlElement,
@JsonIgnore,
@JsonProperty,
@ManyToMany,
@Fetch,
@JoinTable
})
6

Java to nazwa zarówno platformy jak i języka programowania, więc trzeba to rozgraniczyć. Ściśle rzecz biorąc sam język programowania nie ma takiej cechy jak przenośność - jest to cecha platformy.

Język Java nie jest specjalnie imponujący, ale platforma Java to już kawał dobrej roboty. Zwłaszcza chodzi mi o VMkę - żadna inna nie zbliża się efektywnością w optymalizowaniu kodu OOP (tzn chodzi mi głównie o metody wirtualne). Zapowiada się natomiast jeszcze lepiej:

0

Zaletą (jednocześnie i wadą ;) Javy jest jest stabilność, co jest bardzo dobre dla utrzymywania aplikacji. Kolejną zaleta (według mnie) jest "verbose" API, czytasz nazwe metody i juz wiesz co robi.
Ale nie ma czegoś takiego jak najlepszy język, po prostu Java jest dobra do celów "korporacyjnych", ale do tworzenia systemow operacyjnych to gorzej ;)

0
scibi92 napisał(a):

Kolejną zaleta (według mnie) jest "verbose" API, czytasz nazwe metody i juz wiesz co robi.

To o takich nazwach metod i klas mówisz? http://grepcode.com/file/repository.springsource.com/org.aspectj/com.springsource.org.aspectj.weaver/1.6.3/org/aspectj/weaver/patterns/HasThisTypePatternTriedToSneakInSomeGenericOrParameterizedTypePatternMatchingStuffAnywhereVisitor.java

Tak, klasa nazywa się:

HasThisTypePatternTriedToSneakInSomeGenericOrParameterizedTypePatternMatchingStuffAnywhereVisitor

Java tego nie wymusza, rozumiem że to dobre praktyki programistów Springa, "verbose api".

To też jest niezłe: https://github.com/zxlooong/jdk16045/blob/master/com/sun/java/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState.java

Opisowa nazwa mówi wszystko;

class InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState extends State {
InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState() {
        super("WindowNotFocused");
0

Następnym razem spróbuj znaleźć klasę, którą w korpo-kodzie używa się więcej niż 0 razy.

0

Czyli to co nie jest używane w korpo kodzie może być kupą? A nie, wróć, to te "verbose api", zaleta. Żeby łatwiej było czytać źródła

3

Czyli to co nie jest używane w korpo kodzie może być kupą?

No raczej. Kupy leżą wszędzie, w każdym języku i platformie, ale dopóki nie musisz ich dotykać to nie ma problemu. Długie nazwy klas można znaleźć też w .NET: http://codebetter.com/karlseguin/2007/08/02/longest-type-name-in-net/ Z drugiej strony nieraz widziałem kod w C++, gdzie były nazwy zmiennych typu a, b, c, d, i, x, w, z itd Z dwojga złego wolę zbyt długą nazwę niż taką nic nie mówiącą. Jak kto woli.

0

Dochodzi jeszcze cały ekosystem dookoła.
Nie dość, że bibliotek/narzędni jest zatrzęsienie, to jeszcze są stabilne.

Dla porównania masz rubby, gdzie narzędzi zwyczajnie brakuje lub JS gdzie wszystko się zmienia jak w kalejdoskopie.

Z technologiamia MS dla mnie wygrywa otawrtością i darmowością, bo jednak łatwiej jest pobrać dockera z linuxem i javą, niż postawić dockera z windowsem i na tym C#

W technologiach MS nie orientuję się jednak za bardzo, więc ostatni akapit może wynikać z mojej niewiedzy.

1

W każdej technologii znajdziesz fanatyków lub zwyczajnie osoby nie otwarte na coś innego. Zazwyczaj jest to oznaka strachu przed opuszczeniem strefy komfortu, albo słabe umiejętności logicznego i co za tym idzie obiektywnego myślenia. Takich ludzi najlepiej unikać, bo w większości to słabi programiści są. Choć mogą sprawiać wrażenie dobrych, ale to tylko dla tego ze maja wymasterowany wąski zakres rzeczy z którymi od dawna pracują.

0

Zazwyczaj jest to oznaka strachu przed opuszczeniem strefy komfortu

No tak, bo nauczenie się nowego języka wymaga wielkiej odwagi poprzedzonej rozwojem osobistym. Brawo kołczu!

Jak ktoś lubi kodzenie to nie będzie miał problemu z nauką nowych języków. A jak ktoś koduje dla kasy, to nie będzie chciał z obawy przed wypadnięciem z rynku - jednak czy ktoś taki będzie mocno przekonywał innych na forach? Wątpię. Tacy ludzie zwykle w kółko pytają od czego zacząć albo co jest przyszłościowe.

Choć mogą sprawiać wrażenie dobrych, ale to tylko dla tego ze maja wymasterowany wąski zakres rzeczy z którymi od dawna pracują.

Potraktuję to jako okazję do pochwalenia się swoim szerokim zakresem: https://github.com/tarsa?tab=repositories

13

Gdyby Java nie bylaby super to by nie miala slowka kluczowego super.

0

Piszę w Javie nie z miłości do niej, tylko się prostytuuje, a gdybym miał pisać aplety Javy popełnił bym harakiri.
https://www.wykop.pl/link/4222473/java-10-zostala-wydana/

0

Biorąc pod uwagę, że aplety Javy są blokowane częściej niż Adobe Flash to rzeczywiście byłaby to kiepska robota.

0

Czat wp do dziś działa na aplecie javy

0

I nadal książki o Javie 11 będą uczyły apletów i Swinga, aby książka była gruba?

0

JavaSE jest spoko, ale JavaEE już niekonieczne ;D

0

Słusznie wspomniał @Wibowit, że należy rozgraniczyć JVM od Javy. JVM ma swoje mocne strony, jak na maszynę wirtualną Już sam fakt, że gdy już się ta krowa rozhuśta to potrafi dorównać natywnemu kodowi, o czymś to świadczy. Jeśli chodzi o sam język, no cóż. Pracowałem z bardzo złym kodem w Javie jak i całkiem niezłym, ale jako takiej nie lubię. Wydaje mi się, że jeśli ktoś się podnieca nowymi rozwiązaniami np. z Javy8 (to było nowinką jak ostatnio używałem) to chyba po prostu nie ma oglądu w innych językach programowania. Dla kogoś kto programuje w Javie i tylko Javie zapewne fajną wiadomością są Streamy Future'y i tym podobne rzeczy, ale tak naprawdę te rzeczy nie koniecznie pasują do języka. Jak tu obsłużyć wyjątki w Streamie… hmmm… Nieeee, jeszcze może Scala (znów JVM), już prędzej, ale Java mnie nie przekonuje.
Tak właściwie w ogóle ten sort języków zupełnie mnie nie bawi, bo lubię mieć pojęcie co robię, dlatego lubię proste języki jak C (>=99, starsze standardy są dosyć nieprzyjemne), czasem spojrzeć w assemblera(lub dezassemblację). Niespecjalnie jara mnie jakakolwiek idea maszyny wirtualnej, bo działam praktycznie tylko na Linuksie i oprogramowaniu open source (wiadomo, to jest 99% najwyżej, bo w na poziomie firmwaru, czasem sterowników ciężko bez BLOBów; lubię też czasem pograć, ale umówmy się, mało mnie to dotyka) więc nie widzę raczej potrzeby stosować takie rozwiązania. Natomiast jestem entuzjastą łączenia programów za pomocą skryptów, Bash i AWK to są moje języki wysokiego poziomu. xD
Jestem świadom, że większość programistów chciałaby odsunąć jak najdalej od siebie platformę na której pracuje i takie osoby z pewnością mogą kochać Javę (choć wolałbym, żeby jeśli już kochały Scalę, Haskell, OCaml lub LISP), aczkolwiek obawiam się, że takie podejście nie ma dobrego wpływu na branżę (a przynajmniej więcej programistów powinno wiedzieć jak to wszystko działa).
Aaa, i poznasz drzewo po owocach -> Androidowi na pohybel. Nie to żeby był gorszy od Windowsa czy iOSa, bo to wszystko tak samo ograniczający shit.

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