Obecnie wysyłam komputerową aplikację Java. Jest to zwykła stara aplikacja Java / Swing Java 5 i do tej pory wszystko działało ładnie. Java 5 została zaatakowana, ponieważ niektórzy użytkownicy korzystali z wersji OS X / komputerów, które nigdy nie będą miały Java 6 (możemy wkrótce znieść to ograniczenie i przejść na nowszą Javę, po prostu porzucając moich użytkowników, którzy utknęli w Javie 5).
Szybko zaczynam działać z Clojure, ale tak naprawdę nie zrobiłem jeszcze dużo Clojure-to-Java i Java-to-Clojure i zastanawiałem się, czy realistyczne byłoby dostarczenie aplikacji komputerowej Clojure zamiast aplikacji Java ?
Aplikacja, którą wysyłam, ma obecnie około 12 MB z całym plikiem .jar, więc dodanie Clojure nie wydaje się zbyt dużym problemem.
Moim planem byłoby wywołanie interfejsów API Java przez Clojure: moja aplikacja jest już podzielona na kilka niezależnych słoików.
Jeśli dobrze rozumiem, wywoływanie Clojure z Javy jest trudniejsze niż wywoływanie kodu Java z Clojure, dlatego po prostu przepisałem cały interfejs użytkownika (część interfejsu użytkownika, miksowanie komponentów Swing i własnoręcznie buforowane obrazy i tak wymagają przepisania ze względu na wzrost wyświetlacza siatkówki) i wykonaj całe „okablowanie” z Clojure.
Właśnie z tym mam problem: czy wysyłanie aplikacji komputerowej Clojure jest realistyczne? (z pewnością nie wydaje się to być bardzo rozpowszechnione, ale wysyłanie zwykłych aplikacji Java na komputery też nie jest tak powszechne i i tak to robię)
Technicznie, co należałoby zrobić? (w porównaniu z wysyłką aplikacji Java)
źródło
Odpowiedzi:
Tak, jest to całkowicie realistyczne - wydaje się, że niewielu ludzi to robi, ale myślę, że to tylko kwestia czasu (w końcu Clojure jest całkiem nowy!)
Osobiście napisałem grę typu open source w Clojure, która działa jako aplikacja Swing (https://github.com/mikera/ironclad), więc podziel się doświadczeniami, które mogą być przydatne.
main(...)
metodą, która uruchamia część kodu Clojure. Oznacza to między innymi, że nie będziesz musiał kompilować kodu Clojure. Przykładowy kod tutaj: https://github.com/mikera/ironclad/blob/master/src/main/java/ic/IronClad.javasrc/main/resources
i załadować / skompilować w czasie wykonywania.źródło