Pierwszy projekt, praca inżynierska.

0

Witam wszystkich.
Jest to mój pierwszy post na tym forum więc słowem wstępu: jestem studentem logistyki, na tymże kierunku poznałem podstawy Javy, spodobało mi się to do tego stopnia, że zagłębiałem się w ten język w czasie wolnym. Jestem raczej mało zaawansowany ale z dużymi chęciami do dalszej nauki i być może w przyszłości do skierowania swojej kariery w stronę IT. Tyle słowem wstępu.
Jako projekt z koła naukowego dostaliśmy za zadanie znaleźć/stworzyć narzędzie do układania tras przewozów dla pewnej firmy. Z narzędzi z którymi się zapoznałem najlepszy okazał się Jsprit,( https://github.com/graphhopper/jsprit ) Z racji iż dużo czasu poświęciłem na research i zapoznanie się z narzędziem chciałbym wykorzystać je w swojej pracy inżynierskiej. Planuje wykorzystać konkretne biblioteki Jsprita, dopasować je pod konkretną gałąź transportu i stworzyć funkcjonalny GUI. Nigdy nie tworzyłem większego projektu w Javie więc zapatruje się na pracę z wielkim entuzjazmem. Aby nie marnować czasu na zapoznanie się z narzędziami które póki co mi się nie przydadzą chciałbym abyście mi doradzili jak powinna mniej więcej kształtować się moja praca.
Czy powinienem wykorzystać jakiś Framework? Jak tak to jaki?
Czy wykorzystywać Maven'a?
Bardzo docenię każdą poradę dla początkującego. Również każde zdanie o tym, że da się to w ogóle zrobić bardzo zmotywuje mnie do działania.
Pozdrawiam!

1

Przy takiej skali projektu koniecznie musisz wykorzystać kontrolę wersji, najlepiej gita. To na pewno.

0
  1. Spring - jako framework całej aplikacji
  2. Hibernate - jako ORM
  3. Thymeleaf - do template
  4. Gradle - do buildów
2

Hej!

Super, że masz entuzjastyczne nastawienie na start. Aby Ci ono nie zgasło, zadbaj o odpowiednie narzędzia pracy "okołoprojektowe". Ekhart doradził użycie Gita do zarządzania kodem. Sam wspomniałeś o Mavenie i tu odpowiedź brzmi: tak, powinieneś użyć narzędzia do budowania projektu. Poniżej kilka moich sugestii:

  1. System kontroli wersji - j.w.
  2. Narzędzie do budowania - Maven albo Gradle. Osobiście preferuję ten drugi, gdyż został on zaprojektowany na bazie doświadczeń z Mavenem. Jednak jeśli robisz projekt stricte javowy "w klasyczny sposób", to Maven ma wszystko, czego potrzebujesz i na początku raczej nie zauważysz różnic funkcjonalnych. Gdybyś chciał, by system budowania miał większą elastyczność i potrafił więcej, to wtedy Gradle zdecydowanie wygrywa.
  3. Testy jednostkowe - pisz testy jednostkowe, bo inaczej w pewnym momencie złożoność projektu rozłoży Cię na łopatki. W Javie od tego masz JUnit wraz z towarzyszącymi bibliotekami (np. mockito).
  4. Edytor - cóż, dobre IDE to podstawa.

Jeśli chodzi o samą aplikację, to pytanie brzmi: a jaki GUI chcesz zrobić? Chodzi o aplikację okienkową czy webową? Do aplikacji webowych jest całkiem sporo frameworków (ot, choćby Spring), do okienkowych zdecydowanie mniej, aczkolwiek też istnieją (np. NetBeans Platform). Musisz być świadomy, że mają one pewną barierę wejścia i dlatego na start radziłbym zrobić sobie w nich jakiś prosty mini-projekcik na rozruszanie się, skoro piszesz, że nie masz jeszcze doświadczenia w budowaniu dużych aplikacji.

I generalnie nastaw się na to, że za pierwszym razem wiele rzeczy nie wyjdzie tak, jak powinno. Po prostu taka jest kolej rzeczy, że aby zdobyć doświadczenie, trzeba najpierw popełnić 1000000 błędów. Ważne, żeby za każdym razem były to inne błędy :). A jeszcze lepiej, jeśli te błędy robi ktoś inny, a Ty tylko o nich czytasz i umiesz wyciągnąć wnioski :).

0

Bardzo dziękuje za wszystkie odpowiedzi!
Moja wizja jest taka aby do aplikacji okienkowej wprowadzać swoje dane które następnie dadzą nam wynik w postaci najkrótszej trasy pomiędzy punktami (najlepiej na mapie). Być może aplikacja webowa dawałaby większe możliwości, np. wprowadzenie lokalizacji punktu poprzez zaznaczenie go na mapie google. Jeżeli tak jest to mile widziany feedback.
Co do bibliotek Jsprit. Czy da się dołączyć do swojego projektu wszystkie biblioteki z jakiegoś innego? Dodaje póki co tylko te które są mi potrzebne ale jest to na dłuższą metę uciążliwe.

0

Jeśli użyjesz mavena/gradle to zwykle wystarczy zadeklarować tylko "główną" zależność, a to od czego ona zależy doda sie samoczynnie.

0

Polecam Maven bo jednak jest chyba częściej używany. Jak jestes studentem to powinienen dostać licencję studencka do IntelliJ Ultimate, najlepsze IDE z jakiego w życiu korzystałem :)
Spring to bardzo dobry wybór, z co do ORM polecam Spring Data JPA z Hibernate jako Vendorem :)

0

Zrób to w R. Są dedykowane googlowe biblioteki do takich rzeczy, chociażby ggmap. A interfejs zrobisz w Shiny. Roboty na 1 dzień, a w Javie będziesz to miesiącami ciągnąc.

Czyli potrzebujesz:

  • silnika R
  • shiny
  • bibliotek z odległościami
  • ggplot do rysowania map
  • devtools do testów jednostkowych i opakowania wszystkiego w elegancki pakiet z dokumentacją
  • markdown do dokumentacji

Minusem jest to,że te googlowe bibliteki mają limit odpytań 2000 na dzień, za więcej musisz bulić, no ale do projektu uczelniane 2000 powinno wystarczyć.

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