Od wczesnych lat mojego życia w college'u korzystam z Javy, a największym problemem, który mamy, jest absolutnie mniej produktywna niż w przypadku innych języków tłumaczonych. Wszyscy są pewni, że Java jest jednym z najlepiej skompilowanych języków.
Jednak ani Sun, ani Oracle nie włożyły wystarczających starań, aby rozwiązać ten problem. Jednym z problemów jest oczywiście przeładowywanie klas.
Ostatnie próby ze społeczności do rozwiązania tego problemu jest projekt DaVinci Hotswap , JRebel , PlayFramework . Jednak w chwili pisania tego tekstu nie byli jeszcze dojrzali (imo) i nie byli rodowitymi ludźmi. Niektóre z nich nie są przygotowane dla przedsiębiorstw, niektóre nie są kompatybilne ze wszystkimi IDE, niektóre z nich są niedojrzałymi projektami universtiy. Mapa drogowa, a nawet Java dla programistów, jest gotowa, ale społeczność Java nadal nie ma rozwiązania dla przeładowywania klas w locie.
Czy Oracle tak trudno jest podjąć wysiłek, aby rozwiązać ten problem? Dlaczego przeładowywanie klas nie zostało jeszcze zaimplementowane natywnie?
Odpowiedzi:
Co z JEE / J2EE? Został wydany po raz pierwszy 12 lat temu. Jest to obsługiwane bezpośrednio przez Sun / Oracle i wielu innych dostawców.
A co z OSGi? Pierwsze wydanie miało miejsce prawie 11 lat temu. Zbudowano na nim Eclipse (IDE), Glassfish od Sun / Oracle i Apache Felix intensywnie go używają. Możesz go używać z Spring-OSGi.
Nie był obsługiwany natywnie w Java SE, ponieważ aplikacje korporacyjne były celowo obsługiwane przez serwery aplikacji jako osobne produkty.
źródło
Spróbuj tego: http://www.zeroturnaround.com/blog/reloading_java_classes_401_hotswap_jrebel/
W grę wchodzi wiele złożonych problemów. W rzeczywistości nie znam żadnych rozwiązań (dla Javy lub nie), które wprowadzają zmiany strukturalne w stanowych jednostkach. Dynamiczne języki, takie jak Ruby czy PHP, tak naprawdę tego nie robią, nie jestem pewien co do Erlanga, ale myślę, że również straci swój stan.
źródło