Przejście z Javy 6 i Eclipse Indigo na Jave 8 i Eclipse Mars (duzy projekt komercyjny)

0

Cześć,

w dość dużym i komercyjnym projekcie działamy na przestarzałej już Javie 6 i Eclipse Indigo. Klient wymaga coraz to nowszych rzeczy, a te z kolei wymagają do funkcjonowania Javy 8. Ktoś wcześniej zaniedbał tę kwestię i teraz ludzie budzą się z ręką w nocniku. Tak czy siak chcielibyśmy przejść na Javę 8 i eclipse Mars. Zrobiłem już pierwszy "Smoke Test". Aplikacja się kompiluje i startuje. Ogólne działanie jest ok (różne pluginy i procesy, które są gdzieś zaszyte działają ok). Taki test nie gwarantuje jednak, że po zmianie oprogramowania wszystko nagle zacznie hulać, dlatego też chciałbym się was spytać na jakie problemy można się natknąć przy takiej migracji? Czy ktoś z was miał w firmie podobną sytuację? Na co należałoby zwrócić uwagę i zachować szczególną ostrożność?

Z góry dzięki za wszelkie info.

1

Hej. Jakich bibliotek używasz? Jakich frameworków?

0

Frameworki głównie wewnętrzne, tworzone przez inny dział. Sama aplikacja działa na Swingu.

0

Co jeszcze. Taki kod:

public class CastTest extends TestCase {

    private String test = "test";
    
    public void testCast() {
        String r = doSomething(String.class, returnType());
        System.out.println(r);
    }
    
    
    private <Type> Type returnType () {
        return (Type) test;
    }

    private <T> T doSomething(Class<T> clazz, Object...objects) {
        for (Object o : objects) {
            
            return (T)o;
        }
        return null;
    }
}

Taki kod skompiluje się zarówno na Javie 7 jak i Javie 8. Ale gdy odpalimy go na Javie 8 to poleci ClassCastException, zaś na Javie 7 będzie wszystko ok. Czy znacie może jeszcze jakieś podobne tego typu pułapki?

1

Klient wymaga coraz to nowszych rzeczy, a te z kolei wymagają do funkcjonowania Javy 8

Ciekawe jakie, bez jaj...

0

@Szczery choćby nowe wersje farmeworków? ;) Wiele frameworków stara się być na czasie (np. ze względów bezpieczeństwa) i wymagają od ciebie używania nowej wersji JVMa.

1

@tomekz1991:
Zmiana jest w kompilatorze, ale nie w środowisku uruchomieniowym. Kod skompilowany pod Javą 7, a odpalony pod Javą 8 moim zdaniem zadziała. Zmieniły się zasady wnioskowania typów. Jeśli dodasz typ explicite to zadziała i pod Javą 8. Kod:

String r = doSomething(String.class, this.<String>returnType());

PS:
Ten kod co podałeś jest strasznie lewy, wygląda jakby polegał na błędzie w kompilatorze Javy 7.

Edit:
Chociaż w sumie są jakieś regresje w Javie 8: http://bugs.java.com/view_bug.do?bug_id=8043926
Mimo wszystko, jeśli czyiś kod ukazuje błędy w kompilatorze Javy to jest dość grubo :]

0

No jeśli oni mają takie kody w projekcie to zmiana wersji javy to najmniejszy problem :D

Dlaczego? To że nasz kod ukazuje błędy kompilatora Javy (który de facto jest bugiem) świadczy źle nie o nas.

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