Wybór języka pod konkretny projekt

0

Witam,

jestem zdecydowany i odpowiednio zdeterminowany zająć się nauką programowania i pracowania w tym kierunku. Pod tym kątem podjąłem już pewne kroki, dokonałem jako takiego researchu i zamierzam położyć nacisk na naukę Javy od podstaw, pomimo że w podstawowym zakresie miałem już doczynienia z C++ oraz z Pythonem. Przechodząc do sedna: zacząłem obecnie ostatni rok studiów inżynierskich na wydziale zupełnie niezwiązanym z IT. Mam możliwość napisania pracy inżynierskiej opartej na stworzeniu (a w zasadzie remake'u) aplikacji wspomagającej projektowanie pewnego urządzenia sanitarnego. Aplikacja ma być okienkowa, jej skomplikowanie jest absolutnie minimalne i sprowadzi się do pobrania liczbowych danych wejściowych od użytkownika, odpowiednim ich przetworzeniu i wyświetleniu i eksporcie wyników. Promotor nie wymaga nawet żadnej oprawy graficznej, wręcz zaakceptowałby gdyby aplikacja działała w trybie konsolowym jak jej obecna wersja, która jest po prostu tak stara, że nie da się jej otworzyć na 64-bitowych systemach. Na to jednak jestem trochę zbyt ambitny i chciałbym żeby wyglądało to jakoś "po ludzku" ;) Aplikacja (tak jak dotychczasowa wersja) ma służyć studentom do wykonania sprawdzania poprawności wykonywanych przez nich projektów, które stanowią przedmiot jednych z zajęć w toku studiów. Istotne jest, żeby technologia wykonania pozwalała na swobodne uruchamianie programu jako pliku wykonywalnego. Bez konieczności instalowania przez użytkownika dodatkowych sterowników czy np JRE. Przyznam że jestem na początku mojej drogi z Javą i nijak nie potrafię znaleźć odpowiedzi na to pytanie. Optymalnym dla mnie byłoby zrobienie tego w Javie, jako jeden z projektów dzięki któremu posiadłbym kolejne umiejętności, ale nawet nie wiem czy pisanie tego w Javie spełni powyższe kryterium, czy może na czas pracy nad tą aplikacją powinienem wrócić na moment do C++ i zgłębić WinAPI?

1

Żadne WinAPI. Zwłaszcza jeśli zaczynasz. Jeśli już to Java. Choć pewnie i Python byłby do tego lepszy. Poszukaj jak tworzyć aplikację okienkowe w Javie w Swing.

4

Istotne jest, żeby technologia wykonania pozwalała na swobodne uruchamianie programu jako pliku wykonywalnego. Bez konieczności instalowania przez użytkownika dodatkowych sterowników czy np JRE.

JRE możesz zapakować razem z programem. Pythona w zasadzie też byś musiał. A gdybyś pisał w Qt to musiałbyś zapakować z programem sporo ważące DLLki. Pisanie pod WinAPI z kolei sprawi, że uruchamianie programu pod czymkolwiek co nie jest Windowsem będzie (mocno) utrudnione.

1

Aktualizacja:
Znalazłem opis narzędzi z samego JDK służących do zapakowania JRE razem z programem Javowym i zrobienia instalatora na Windowsa, MacOSa czy Linuksa: https://docs.oracle.com/javase/8/docs/technotes/guides/deploy/self-contained-packaging.html

0

Ja bym rozważył QT (znacznie lepiej mi się pracowało, całkiem fajny framework) albo jakiś interfejs HTTP. WinApi to raczej masochizm. Argumentem za Javą byłaby ewentualnie chęć przeniesienia tego na Androida. Myślę, że wszystko zależy od kierunku jaki chciałbyś nadać swojej karierze. Java to krok w stronę biznesowych aplikacji i dużej ilości pracy dla niekoniecznie dobrze wykwalifikowanych developerów. C++ mógłby być krokiem w stronę ciekawszych zagadnień – tu mniej pracy, ale często ciekawszej i bardziej ambitnej. Pójście w stronę technologii webowych byłoby dosyć uniwersalne bo pozwoliłoby zarówno na jedną z wielu ofert dla frontend–developera, ale duże możliwości bycia freelancerem (myślę, ze najłatwiej zacząć).
Co do ambicji i interfejsu okienkowego to akurat takie rozwiązanie może być walnięciem kulą w płot. Interfejs tekstowy jest bardzo przydatną rzeczą, warto udostępnić obok interfejsu okienkowego, albo co najmniej masowe przetwarzanie plików CSV czy innych typów danych – dla studentów to mogłoby być przydatne. Analogicznie, jeśli miałbyś robić niednak w technologii webowej, dobrze byłoby udostępnić API przez RESTa.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.