Java는 기존언어들, C/C++등등의, 좋게 말해서 방임에 가까운 높은 자유도, 마치 한 1만명쯤 살고있지만, 필요할때마다 증축한 주인없는 기괴한 가건물단지처럼, 정돈되지않은 마구잡이식 라이브러리들과 필요할때마다 추가되어 연관성을 파악하기 힘든 문법들 그리고 그로인해 생겨난 수많은 기믹들, 기믹을 이용하지않거나 모른다면 생각을 구현할 수 없는, 마치 소수의 강력한 마법사들이 통제하는 그런, 그들만의 리그...

를 타파하기 위한 이데올로기를 가지고 1995년 시작되었다.

그래서 많은 부수적으로 사용할 수 있는 보조기능들중 중요하다고 판단되는 것들은 컴파일차원에서 강제해버리고, 기믹들을 이용해 부수적으로 구현할 수 있는 많은 추상적 개념들을 문법의 하나로 박제해버렸다.(즉 그 구현방식이 정규적인 방법이 아닌 기믹을 이용한 일종의 트릭이라 할지라도, 추상적개념과 그 효용이 명확하다면 기믹을 정규 문법화 키워드화한 것)

덕분에 Java코드에서는 다른 초창기 언어 사용자들 기준으로는 상당히 숙련된 전문가들만이 사용할 수 있는 마치 강력하지만 소수만 사용가능한 마법과도 같은 추상적 개념들의 구현체를 초보자도 쉽게 구현하고 사용할 수 있다. (하지만 사용하게 되었뿐, 개념자체는 바뀐것이 없기떄문에 이해하기가 쉬워진 것은 아니다, 오히려 기믹을 사용할 수 밖에 없었던 배경이나 필요한 상황에 노출되는 경험, 의의등을 이해해가는 과정을 생략하는 바람에 더 어렵게 만들 수 있다는 점이 Java의 허점)

뿐만아니라 조금이라도 어렵거나 까다롭거나, 하는 게 좋지만 의무사항은 아닌 많은 것들의 선택권과 인지가능성 자체를 삭제해버리고, 모르고 했더라도 기왕이면 좋은 걸로 적용되게, 모르고 하더라도 그냥 상식적으로 작동하게, 번거롭지만 안하면 위험한 사소한 안전수칙들을 모두, 문법차원에서 강제화 및 은닉화 해버렸다.(깔끔하게 포장)

더 나아가 한번 Java로 코드를 짜면, 플랫폼 즉 사용할 기기가 바뀔때마다 그에 맞춰 커스텀하는 과정을 모두 없애는.. 어렵지만 강력한 마법이 아니라, 진정 편리하지만 신뢰할 수 있게 작동하는 마법을 만들어 보고자 했다. 이를 위해 상황에따라 조금씩 달라지는 마법주문의 어려운 부분을 해석해주는 중간 단계 시스템을 만들었다. JVM이라고 하는 가상머신은 Java로 된 마법을 어떤 기계나 환경에 사용할지에 따라 적절한 실제 마법으로 바꿔주는 역할을 한다. 이렇게 하면 실제로 속도가 느려지지만, 컴파일시간을 좀 더 할애해서 컴파일타임에 마법을 모두 외워버리고 러닝타임에는 마법을 실행하기만 하는 방식으로 스트립팅언어의 성능저하문제를 상당부분 완화하였다. 즉 성능저하는 최소화하면서 편의성과 생산성을 극대화한 것이다.

이만하면, 모두들 C나 C++ 보다 Java가 충분히 메리트 있다고 생각하겠지, 슈퍼마켓 사장님도 조금만 공부하면 원하는 걸 어떤 환경이나 기기에서든 구현할 수 있는, 마법의 민주화 - 머글들의 마법사용보편화와 같은... 개발자의 세계에도 대중화의 시대가 올꺼야. 그게 아마 Java의 정신이 아니었을까...

... 담대한 꿈을 안고 시작한 Java였으나, 스마트폰이 보급되기전 PC일변도의 시장환경에서 실제로 받아들여지던 플랫폼은 고작해야 3~4가지, OneCodeForEveryPlatform의 외침은 다분히 사치스럽고 현학적인 이상에 가까웠으며, 정신과 시도는 칭찬받았으나 "적용할 플랫폼이 없는데..? PC운영체제 두어개만 커버하면되는데.. 굳이 n개의 운영체제를 고려하고, 굳이 JVM끼고 성능을 포기하면서까지 스크립팅식(바이트코드라한들)으로 언어를..?" 이라며 외면받았다..

그래서 2002년, 부흥하고자 등장한 것이 있었으니,

어둡고 추웠던 긴 Java의 겨울을 지나, Spring을 만나 Java는 다시 꽃피우리.

라는 뜻의 스프링.

자바만으로 충분히 편하지 않다면, 듣도보도 못한 수준의 편리함을 제공하는 프레임워크는 어떤가, 자바가 추구하는 진정한 편리함이 무엇인지 한번 느껴보시라.

물론 이것만으로 전세를 역전할 순 없었지만, 웹기반의 서버프로젝트에 다수 보급되는데 성공하게되고

이렇게 Spring으로 기반을 다진 Java는 훗날 스마트폰의 등장으로

OneCodeForEveryPlatform을 외친 것이 아니라 예언한 것이 되어버렸다.