2020년 5월 30일 개발 이야기 정리(자바 25주년 기념 특집)

Jay Park
Jay ParkCTO at EX-EM
2020년 5월 30일
개발 이야기 특집(자바)
박재호(jrogue@gmail.com)
참고 자료
• <컴퓨터 vs 책> 블로그
• http://jhrogue.blogspot.com/
• OKdevTV 유튜브 방송
• 오늘 방송:
https://www.youtube.com/watch?v=tJBxmVLu0xI&list=PLdntWJk2t
JPKvRB0mSqC5tyKUv7HFtcqg&index=2
• 재미있는 개발 이야기 리스트:
https://www.youtube.com/playlist?list=PLdntWJk2tJPKvRB0mSqC5t
yKUv7HFtcqg
• 슬라이드 셰어
• https://www.slideshare.net/jrogue/presentations
오늘의 짤방
2020년 5월 23일 25주년
https://www.oracle.com/news/connect/25-years-of-java-technology-community-family.html
JetBrains가 사랑하는 자바의 25가지 특성
• https://blog.jetbrains.com/kr/2020/05/25-things-we-love-
about-java-ko/
호환성
• 25년 전 코드도 최신 JVM에서 수행 가능
성숙도
• 25년 동안 학교, 대학, 직장에서 자바 사용
• 공급업체, 비영리단체, 개인들이 문서화에 참여
• 코딩을 원하는 개발자들에게 수 많은 일거리 창출
지속적 개선
• 호환성 & 성숙도 vs 플랫폼 & 언어 발전
• 자바 9부터 6개월 주기로 신형 버전 출시
균형성
• 자바는 호환성과 미래 사이에서 균형을 맞춤
• 제거될 예정인 사용 중단 기능에 대한 경고 제공 + 해당 항목의 대체 기능 발
전
• 높은 안정성을 원하는 사람은 LTS를 계속 사용 vs 신형 기능을 원하는 사람
들은 최신 버전을 사용
표준
• Java EE/Jakarta EE/JDBC 등 개발자의 삶을 편하게 만들어줌
• Java 언어 사양, 자바 메모리 모델, JVM 등 자바 언어를 구체적으로
명세
작성은 한 번만, 실행은 어디서나
• WORA(Write Once, Run Anywhere)
• 클라우드 시절에는 가치가 다소 퇴색되었지만 여전히 이점을 활용
• IntelliJ IDEA조차도 데스크톱에서 WORA를 활용
성능
• 자바는 고성능
• 25년 동안 성능을 개선: 가비지 컬렉터, JIT → 금융업에서도 널리
사용되고 있음
관찰 가능성/관리
• JFR(Java Flight Recorder)와 Mission Control이 OpenJDK에 포
함(Java 11 이후)
• JMX를 사용해 애플리케이션을 동적으로 관리
JVM
• JVM은 자바 언어 자체와 별개로 구성
• 플랫폼 독립적
기타 JVM 상에서 동작하는 언어
• 코틀린(by JetBrains)
• Groovy, Scala, Clojure, Jruby
• 자바 간의 상호 운영성 보증
라이브러리/프레임워크
• Spring과 Spring Boot!
빌드 도구와 의존성 관리
• JAR 파일 배포에서 Maven/Gradle로 발전
JUnit과 자동화된 테스트
• 1997년에 JUnit 등장
• 2004년에 TestNG 등장
IDE
• IntelliJ!
• 정적 타입으로 인해 IDE에서 강력한 작업을 수행할 수 있음(예: 리팩
터링)
공동체
• 자바 공동체는 거대하고 성숙됨 → 사용자 그룹, 교육
개발팀
• 자바 세상의 거인들
Javadoc과 문서
• Javadoc은 API 문서를 언어의 핵심 부분을 만들고 있음
• 메소드 호출, 클래스/패키지 사용
오픈 소스
• OpenJDK
무료
• 오라클이 자바 11에서 라이선스/지원 변경 이후에도 무료로 계속 사
용 가능
객체지향적
• 자바는 처음부터 객체지향적인 언어로 설계
• 설계 패턴과 코딩 우수 사례
발전과 적응
• 람다 식, 불변 데이터 구조, 유형 추론 등 새로운 추세를 반영
가독성에 중점
• 자바 코드는 프로그래머가 아닌 사람도 읽게 만드는 경우가 많음
• 연산자 중복(Overload) 미지원
언어 기능
• 람다 식
• Streams API(w/ 람다 식)
• java.time
• Optional
• var(유형 추론)
• 접근 한정자/모듈
• switch 식
• 도움이 되는 NullPointerExceptions
• 어노테이션
• 검사된 예외
1 of 27

More Related Content

2020년 5월 30일 개발 이야기 정리(자바 25주년 기념 특집)