자바 주석도 함부로 달 수 없게 되네요.

HTML 4.01에 어긋나는 자바독은 에러를 발행하는데 그 옵션을 끄는 방법은 -Xdoclint:none 이라고 합니다.


from: http://blog.joda.org/2014/02/turning-off-doclint-in-jdk-8-javadoc.html

joda-time 을 만드신 분의 블로그네요.

http://blog.joda.org/search/label/jodatime


b128로 공개되었습니다. beta벗어나서 RC(Release Candidate) 버전입니다.

3/14 정식버전 출시예정이라고 합니다. 이제 한 달 정도 남았네요.


kenuui-Retina-MacBook-Pro:~ kenu$ java -version

java version "1.8.0"

Java(TM) SE Runtime Environment (build 1.8.0-b128)

Java HotSpot(TM) 64-Bit Server VM (build 25.0-b69, mixed mode)


스프링4 빌드할 경우 jdk1.8이 필요합니다.

https://jdk8.java.net/download.html




아직은 JDK8의 정식 버전이 나오지 않아서 이 화면을 보기 쉽지 않습니다.



eclipse 개발중인 다른 버전을 다운로드 받아서 JDK8을 테스트할 수 있습니다.

efxclipse는 e(fx)clipse 즉, JavaFX 개발용 패키지들이 포함된 이클립스입니다. 그래서 용량이 350MB 이상입니다.

http://downloads.efxclipse.org/eclipse-java8/


http://docs.oracle.com/javase/tutorial/java/javaOO/examples/RosterTest.java
http://docs.oracle.com/javase/tutorial/java/javaOO/examples/Person.java
두 소스는 JDK8 샘플입니다.
설명은 http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html 주소의 문서를 참고하세요.



Lambda Expression 이라고 얘기합니다. jdk8에 포함된 기능입니다.

인터페이스의 메소드가 하나일 때, 이것에 대한 인터페이스를 만들고, 익명 클래스로 만들어서 처리하는 것을 단순화 시켰습니다.

http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html

예제가 잘 되어 있습니다.


최종 결과는 다음과 같은 코드입니다. C++에서 보던 -> 기호 때문에 당황스럽군요.

printPersons( roster, (Person p) -> p.getGender() == Person.Sex.MALE && p.getAge() >= 18 && p.getAge() <= 25 

    );


람다 표현식을 사용하기 전의 코드는 다음과 같이 익명 클래스로 되어 있습니다.

printPersons(
    roster,
    new CheckPerson() {
        public boolean test(Person p) {
            return p.getGender() == Person.Sex.MALE
                && p.getAge() >= 18
                && p.getAge() <= 25;
        }
    } 

    );


interface CheckPerson {
    boolean test(Person p);
}


확실히 interface 파일 하나 줄이고, 코드를 1/3로 줄이는 효과가 있습니다.

람다 표현식을 사용하려면 아직 개발자 미리보기 버전을 설치해야 합니다.

http://jdk8.java.net



갑자기 이 노래가 생각납니다.

Lambada




맥에서 java8 현재 RC1을 사용하고 있는데, jsp가 컴파일이 안 되는 이슈가 있네요.


HTTP Status 500 - Unable to compile class for JSP: An error occurred at line: 1 in the generated java file The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files Stacktrace:


type Exception report

message Unable to compile class for JSP: An error occurred at line: 1 in the generated java file The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files Stacktrace:

description The server encountered an internal error (Unable to compile class for JSP: An error occurred at line: 1 in the generated java file The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files Stacktrace:) that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 1 in the generated java file
The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files

Stacktrace:
	org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
	org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:331)
	org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:469)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.28 logs.


Apache Tomcat/7.0.28

환장했습니다.

이클립스에서 톰캣의 런타임 JRE를 java7으로 강제 지정하니 잘 동작합니다.
ctrl+3 에서 runtime 으로 검색하고 Preferences > Runtime Environments 선택합니다.


톰캣을 선택하고 Edit... 버튼을 클릭합니다.


JRE: 항목이 Java SE 8로 되어 있군요. SE(시)8


Workbench default JRE 는 이클립스 워크스페이스에서 기본 지원하는 버전을 사용하는데, 그냥 맘편하게 Java SE 7 으로 지정하는 것도 나쁘지 않습니다. 기본환경이 언제 저를 배신할 지 모르기 때문이죠.


정식 Java SE 8이 나오면 제대로 잘 되기를 바래봅니다.

아, 오라클



+ Recent posts