[Java] 자바의 역사와 철학[1]

박상혁·2023년 1월 3일
0

Java

목록 보기
2/10
post-thumbnail

서론

자바의 역사와 철학에 대해 알아봄으로써 시대순으로 자바를 이용한 기술들이 어떻게 발전해나갔는지 살펴봅니다.
기존 JavaEE와 비교하여 Spring Framework의 장점은 후 포스팅으로 이어서 진행합니다.

목차

1. 초기
2. 웹의 등장
3. 인터넷의 발전
4. 애플릿의 쇠퇴
5. 서버 어플리케이션 개발
6. Spring Framework의 등장
7. Android 응용 프로그램 개발 공식 언어

본론

초기

초기의 자바는 웹, 모바일 환경을 위해 개발된 것이 아닙니다.

리모컨, 전자레인지 등의 가전제품에 내장될 소프트웨어를 위한 플랫폼 독립적인 언어를 지향했었습니다.

자바가 등장하기 이전, C++로 가전제품 소프트웨어를 개발하려 하는데,
가전제품은 매우 다양하기 때문에 그에 따른 CPU도 각각 만들어야 하며, 해당 CPU에 맞는 C++ 컴파일러를 개발하는데 있어 상당한 비용이 발생했습니다.

이러한 비용문제와 개발시간의 증가로 인해 다른 방식을 찾아야만 했고
이를 통해 Cross Platform을 지향하는 Java라는 언어가 탄생하게 됩니다.

Cross Platform
플랫폼 독립적인 개발환경.
같은 언어라도 여러 플랫폼에서도 동일하게 작동할 수 있게 하는 환경.
자바는 다른 OS 환경에서도 동일한 자바 바이트코드로 똑같이 작동합니다.

이를 통해 자바의 철학이 처음 등장하게 됩니다.
Write Once, Run Anywhere

웹의 등장과 발전

Web다양한 컴퓨터, OS, CPU로 이루어진 분산형 시스템입니다.

지금 인터넷만 보더라도 다양한 CPU, OS 등에 맞게 개발되어야 한다는 사실을 알 수 있습니다.
각 OS에 맞게, 각 CPU에 맞게 인터넷 프로그램을 다 따로 개발하는 것은 너무나 힘든 일입니다.

마침 플랫폼 독립적인 프로그램 개발 언어를 철학으로 가진 자바라는 언어가 눈에 띄었고, 이는 곧 웹 개발의 선두로 급부상하게 됩니다.

이후, 인터넷이 발전하게 되면서 더이상 이메일을 읽거나, 뉴스를 읽는 것과 같은 수동적인 정보를 보는 것에서 그 이상의 행동을 원하게 됩니다.

이로 인해 인터넷 상에서 전송이 가능하고, 자바를 지원하는 웹 브라우저에서 실행될 수 있도록 하는 애플릿이라는 프로그램을 개발하게 됩니다.

애플릿은 다른 프로그램을 사용했을 때의 2가지 문제점을 해결하면서 인기가 더 많아집니다.

  • 이식성
    JDK는 각 환경마다 다르지만, 이를 실행시킬 프로그램(바이트코드)는 같기 때문에 똑같이 실행할 수 있습니다.
  • 보안 이슈 해결
    방화벽을 제공하여 네트워크 상에서 정보를 안전하게 다운로드 할 수 있도록 했습니다.

애플릿의 쇠퇴

시간이 흘러 애플릿의 단점들이 속속 등장하기 시작합니다.

  • 실행 시간
    자바 가상 머신으로 실행하는 것이기 때문에 ActiveX와 달리 실행시간이 더 오래 걸립니다.
  • 보안 문제
    앞서 보안문제를 해결했기 때문에 애플릿이 선호되었는데, 시간이 흘러 다른 곳에서 보안 이슈가 계속 생겨나기 시작하였고, 뒤늦은 회사의 이슈해결 등으로 인해 점점 신뢰를 잃어갔습니다.

이는 자바에 대한 부정적인 인식을 심어주게 되었습니다.

  • HTML5, javascript의 발전
    이들이 발전하게 되면서 더이상 애플릿과 같은 프로그램을 추가로 설치할 필요가 없어졌습니다.

이로 인해 오라클에서도 java9부터 지원을 중단한다고 발표하였고
이후 현재는 유사 기술인 Java Web Start가 뒤를 잇고 있습니다.
(있는줄도 몰랐습니다..)

서버 어플리케이션 개발

인터넷의 양 진영, 클라이언트와 서버.
클라이언트는 무너졌지만 서버쪽의 자바는 아직 견고했습니다.

JavaEE
PC에서 동작하는 표준 플랫폼 Java SE에 추가하여 서버에서 동작하는 장애복구, 분산 멀티티어(프론트, 백, 데이터)를 추가한 서버측 개발을 위한 플랫폼.
Java EE Spec에 따라 구현한 것을 웹 애플리케이션 서버(WAS)라 불립니다.

하지만 이 또한 시간이 지나면서
기능은 강력하지만, 너무 많은 기능으로 인해 복잡성이 배로 증가하면서 개발 난이도도 동시에 배로 증가하게 됩니다.

요약

자바는 플랫폼 독립적인 + 객체지향 프로그래밍 언어입니다.

참조

자바의 역사와 철학 - 정민혁
자바EE의 역사 및 스프링과의 관계 - fender

profile
개발 노트

0개의 댓글