Java – jak musiałem z niej skorzystać, a nie chciałem.

Java, czy Python? Od lat twierdzę, że język programowania to narzędzie w rękach programisty. Coś jak młotek i dłuto. Można w sumie tak samo korzystać z tych narzędzi, ale korzystanie z nich w każdym możliwym miejscu to głupota.

Praca inżynierska

Ostatnimi czasy przekonałem się o tym bardzo mocno, gdyż spotkało mnie kilka sytuacji, gdzie mój ulubiony język programowania jakim jest Python niestety nie zdał egzaminu.

Zdążyłem się w większości social media pochwalić, że moja praca inżynierska jest serwerem do gry Minecraft, co jest dla mnie mega dziwne, że:

  • Dopuścili mi taki temat,
  • Są ludzie co mi pomagają,
  • Projekt w założeniach i wykonaniu (sic!) – mega się podoba kolejnym osobom,

Tworzymy pewną aplikację, która rozszerza grę w taki sposób, by jednak warto było czasami nie grać i osoby, które nie grają – też nie tracą z tego powodu. Projekt w samych założeniach jest już skomplikowany, dlatego pozwolę sobie napisać osobny artykuł na ten temat.

Problem jaki napotkałem…

Jednakże chciałem opisać problem jaki spotkałem podczas pisania pracy i jak się okazało, swój pogląd na narzędzia czas wprowadzić w życie.

Kilka miesięcy spędziłem nad znalezieniem sposobu na wdrożenie języka Python do gry (napisanej w Java) w takim sposób, by nie wymagało to od gracza modyfikacji oryginalnej produkcji.

Niestety nie było gotowego rozwiązania. Na Github.com znalazłem plugin do gry, który tłumaczył język Python, poprzez Jython tak, by był zrozumiały dla gry. O ile sam plugin nie był jakiś problematyczny, wszystko działało, to jednak pierwszym problemem był brak obszernej dokumentacji i tutaj się przekonałem, że dokumentacja to potęga – bez niej kroczyłem jak dziecko we mgle, co chwilka wykorzystując sztuczki, by tylko dowiedzieć się, co robią poszczególne obiekty i metody w nich zawarte.

Był to dla mnie koszmar, ale jednak realny problem w przypadku projektów, które trzeba utrzymywać, a brakuje w nich dokumentacji.

Na własnej skórze przekonałem się, że jest to bardzo ważna rzecz. Dalej – jak się okazało, moje założenia były od podstaw błędne!

Java – wygrałaś!

Na uczelni podczas walk z jedną funkcjonalnością bardzo się zdenerwowałem się. Do tego stopnia, że w ciągu kilku godzin przepisałem cały moduł aplikacji do języka Java.

Wielki hołd muszę oddać JetBrains (dokładniej ich aplikacji – IntelliJ) oraz dokumentacji Spigot. Tylko dzięki temu udało mi się przygotować wszystko 10x razy szybciej i temat mogę natywnie rozwijać oprogramowanie oparte o język Java i nawet nie jest to dla mnie taki dramat jak początkowo sądziłem.

No dobra, większość może mnie zapytać – czemu od razu nie pisałem w Java, skoro natywnie jest wszystko utrzymywane właśnie w tym języku – odpowiedź jest prosta – słaba dokumentacja!

Pierwsze podrygi w tworzeniu rozszerzeń do gry były dla mnie bardzo nieprzyjemne ze względu na dokumentację Bukkit – była bardzo dla mnie nieprzyjemna i patrząc po jej jakości – równie dobrze mogłem przechodzić dokumentacyjne piekło, byle jak najdalej od Javy. W ten sposób szukałem przyjaźniejszej alternatywy dla znanego mi języka programowania.

W sumie nie jest tak źle.

Podsumowując – przeszedłem długą drogę, by przekonać się na własnej skórze, że moja ideologia w programowaniu sprawdziła się. Język programowania to tylko narzędzie, a dobry specjalista każde narzędzie będzie umieć wykorzystać.

API całej aplikacji stworzyłem w języku Python, front-end kumpel robi w JavaScript (Vue.js dokładniej), zaś plugin do Minecraft musiałem stworzyć w języku Java. Natywne rozwiązanie jest najlepsze, a samo wykorzystanie narzędzia nie jest takie trudne jak początkowo myślałem. Przyznam, że żałuję swojej próby wykorzystania jednego języka w każdej sytuacji, bo obecny etap prac mogłem osiągnąć kilka tygodni temu.

Liczę, że już niedługo będę mógł się pochwalić moją pracą inżynierską i opiszę więcej problemów jakie napotkaliśmy wspólnie z resztą ekipy podczas tworzenia tego ciekawego oprogramowania.

Zalecam również zapoznać się z moim wpisem na temat bezpieczeństwa stron WWW, monitoringu i działań post mortem na stronie marki Kei.pl!

Jak również zapraszam do zapoznania się z resztą moim wpisów tutaj!