Jest to przydatne głównie przy tworzeniu pliku JAR współpracującego ze starszą wersją Java. Uważam, że do tej pory wszystkie JDK są w stanie wykonać starszą wersję, więc nie ma prawdziwego powodu, aby cel był większy niż źródło.
Warto jednak ustawić na przykład target
1.6 podczas korzystania z 1.7 JDK.
Nie jestem pewien, ale wierzę, że to może działać w niektórych sytuacjach do kompilacji kodu java przy użyciu 1,7 1,7 1,6 kompilator do słoika, na przykład wyrażenia takie jak
ArrayList<Integer> foo = new ArrayList<>();
że są ważne tylko w wersji 1.7+ należy skompilować do kompatybilnego kodu bajtowego 1.6. Ale nie sprawdziłem, czy kompilator faktycznie to zrobi. Niestety, nie wydaje się, aby to zostało wdrożone w praktyce.
Zauważ, że znalazłem, że 'javac' nie obsługuje wszystkich kombinacji. Również faktycznie mam przypadek użycia. W Javie 6 JAX-WS jest wbudowany, więc chciałem mieć rozwiązanie działające na zwykłej Javie 6 bez dodatkowych bibliotek. To rozwiązanie wymagało wówczas, aby kilku klientów mogło być wykonywanych na JVM Java 5 (i JAX-WS wprowadzonym z boku), a składnia '@ Override 'została zmieniona, więc nie była natychmiastowo kompilowana przez Java 5 javac. (To był wcześniejszy, może być łatwiej zrobić dzisiaj). –
Zobacz także '-bootclasspath', jak opisano dalej w [tej odpowiedzi] (http://stackoverflow.com/a/10663478/418556). –
@skaffman - * "Dość, dlaczego to zrobiłeś to inna sprawa ..." * - Java próbuje interpretować komentarze. Jeśli języki nie są ustawione poprawnie, kompilacja może się nie powieść z powodu niedozwolonego znaku w komentarzach !!! Czasami łatwiej jest powiedzieć kompilatorowi, aby przestał interpretować komentarze, a następnie, powiedzmy, naprawić informację o prawach autorskich w setkach plików. – jww