왜 자바 애플릿은 지원이 종료되었을까?
자바에 대해서 공부하다가 https://leexx.tistory.com/112 자바 애플릿은 무슨 사연으로 종료가 되었을까 궁금해서 찾아보았다.
책에서는 보안 문제라고 하였지만, 찾아보니 의외로... 보안 관련 특정 사건이라기보다는 복합적인 이유로 사라졌다고 한다. 누가 악의적인 프로그램을 만들어서 크게 문제가 되어서 중단이 된 줄 알았는데... 그렇진 않았다.
정리해보니 두 가지 이유로 볼 수 있었다. Flash 의 등장과 HTML5 로의 진화(?) 가 이유이다. 물론 보안 문제도 있지만, 그건 Flash 를 사용하지 않게 된 이유에 더 가깝다.
왜 자바 애플릿은 Flash 에게 밀렸을까?
무려 12년 전에 올라온 질문이다 (여기)
정리해보면, 자바 애플릿은 실행되기 전에 JVM 을 실행하기 때문에 매우 느렸다고 한다.
또한 그래픽을 다루는데에 보다 유용한 라이브러리들이 잘 제공이 되어서, 애니메이션이나 게임을 개발하는데 훨씬 유용했다고 한다.
그리고 플래시 개발자의 몸값이 자바 개발자보다 저렴했다는 (...) 이야기도 있다.
이런 이유들로 자바 애플릿은 2000년대 초반부터 플래시에게 밀리게 되었다고 한다.
Flash 의 역사
찾아보다보니, Flash 는 처음부터 Adobe Flash 가 아니었다고 한다.
그러고보니 어렸을 때 플래시게임 (그땐 플래시가 뭔지도 몰랐던...) 을 했었는데, 어느날부터 설치 창이 뭔가 바뀌었어서 어 뭐지? 했던 기억이 있다. 아마 그때쯤인거같기도..? 근데 년도를 계산해보니 또 아닌 것 같기도..? 모르겠다...
Flash 는 총 두 개의 회사를 거치면서 세 개의 이름을 가졌다.
- 1996년에 FutureWave Software 회사에서 웹 애니메이션 툴로써 FutureSplash Animator 를 개발했다.
- 그러다 같은 해 말에 Macromedia 라는 회사가 FutureWave Software 를 인수하고, 소프트웨어 이름도 Macromedia Flash 로 바꿨다. 그리고 Flash Player 플러그인도 제공해서, 웹 브라우저에서 Flash 를 재생할 수 있도록 했다.
- 그리고 2005년에 Adobe 가 Macromedia 를 인수하면서 Adobe Flash 로 이름이 바뀌었고, 기능은 동일했다.
왜 자바 애플릿은 HTML5 의 등장으로 밀려나게 되었을까?
HTML5 에서는 비디오, 오디오, 애니메이션, 그래픽 등의 기능을 네이티브로 (즉, 별도의 플러그인 없이) 웹 브라우저에서 바로 보여줄 수 있었다. video 나 audio 태그가 이때 나왔다.
이로인해 멀티미디어를 보여주는 강점을 갖고 있던 자바 애플릿은 밀려나기 시작했다.
자바 애플릿의 보안 위협
자바 애플릿의 취약점으로는 백도어와 XSS, CSRF 가 있다. 또한 유저를 트래킹할 수 있으며, 악의적인 행동을 할 수 있고 sandbox 를 탈출할 수 있다.
찾다보니 해당 공격을 탐지하는 방법에 대한 문서도 있었다. 물론 읽어보진 않았다 ㅎ (여기)
이런 이유들로 자바 애플릿은 실행하지 않는 것이 가장 안전하다. (여기)
마지막 지원
IE 11 에서 자바 애플릿 지원을 종료함 으로써 (https://blogs.oracle.com/javakr/post/ie11-java) 모든 브라우저에서 지원을 하지 않게 되었다.
번외 - Web Assembly
찾아보다보니 Web Assembly 도 자바 애플릿이나 플래시처럼 JavaScript 로 작성하지 않아도, 웹에서 멀티미디어 요소 등을 제공할 수 있다고 한다. 다만 플래시나 자바 애플릿과 달리, 브라우저에서 아예 빌트인으로 제공을 하고 (HTML, CSS, JavaScript 처럼) 보다 간단하다고 하다. (여기)
물론 Web Assembly 도 보안 위협이 존재하지만, 방법이 있는 듯 하다. (여기)
요 내용은 다른 글에서 작성하는게 좋을 것 같다.
그나저나 Quora 도 유료화가 되었구먼...
'자바 Java' 카테고리의 다른 글
추상 클래스(abstract class) 와 인터페이스(interface) / 확장 / 예시 / 용도의 차이 (0) | 2023.09.28 |
---|---|
Java 의 접근 제어자 - public, protected, default, private 에 대해서 (0) | 2023.09.23 |
Java 의 역사와 특징 (0) | 2023.09.22 |
[자바의정석] 배열 (0) | 2023.02.12 |
[자바의정석] 자료형 (0) | 2023.02.10 |