티스토리 뷰
국내 한정으로만 놓고 보면 Java는 절대적인 영향력을 가진 개발(프로그래밍) 언어입니다. SI 시장을 포함하면 체감상 90% 이상 점유하고 있을 것으로 예상되고, 서비스 회사에서도 아직까지 절반 이상 사용하고 있다고 느껴집니다. 물론 C 언어와 같이 더 오래된 절대왕자도 존재하지만, Web 환경을 위주로 개발할 것이 많은 현재의 국내 상황에선 Java가 절대적인 위치에 있는 건 부인할 수 없습니다.
그런데, 이런 위치의 Java를 악의 축, 쓰레기 정도로 표현하면서 욕을 하는 사람들을 개발자들이 모인 곳에서 심심찮게 볼 수 있습니다. 대충 들어보면 몇 가지 키워드가 들립니다. 전자정부 프래임워크, 높은 메모리 사용량, 실행파일 용량, 컨테이너 비친화적, 장황한 문법, 신기술 적용이 느림 점, Spring!!!... 뭔가 많습니다. 정말 퇴출되어야 할 물건이 아직도 활보하고 있는 걸까요?
어차피 퇴출될 물건이면 자연스레 알아서 퇴출될 것입니다. 우리보다 점유율이 낮다고 하는 타국에서 이미 다 사라지고 없어졌어야 하겠죠. 하지만, 아직까지 타국에서도 적지 않은 비율로 쓰이고 있습니다. 그럼 왜 한국은 점유율이 압도적이고 타국에서도 여전히 주요 언어로 쓰이고 있으며, 정말 저러한 문제점들이 Java를 더 이상 쓰지 말아야 할 이유들일까요?
1. 전자정부 프래임워크
한국에서 압도적인 점유율을 가지게 해 준 주요 원인이자, 이걸 조금만이라도 겪어본 사람들이라면 대부분 욕을 한다는 그 이름도 찬란한 "전자정부 프래임워크"는 Java라는 개발 언어에서 가장 많이 사용되는 Spring이라는 프래임워크에 정부의 많은 사이트들이 공통적으로 사용할법한 내용을 추가하고 개발 도구까지 한 묶음으로 정리하여 제공함으로써, 정부가 발주한 사업을 하는 사람들이 개발 환경을 설정하는데 최소한의 시간을 들여도 되도록 하는데 목적을 두고 있습니다. 하지만, 공공 SI 사업(정부 주도)이 대한민국 개발계에 있어 너무나 비중이 크기 때문에 Java라는 언어를 강제하는 전자정부 프래임워크로 인해 다른 개발 언어를 쓸 수 있는 여지를 아예 없애버렸다는 오명을 뒤집어쓸 수밖에 없게 만들었고, 버전업도 느리고 위에서 언급한 Java 특유의 문제를 그대로 안고 있기 때문에 욕이란 욕은 다 먹고 있습니다.
그런데, 정말 전자정부 프래임워크 때문에 Java 개발자만 살아남고 타 언어는 발을 붙이지 못하고 있는 걸까요?
저는 반은 맞고 반은 틀리다고 생각합니다.
전자정부 프래임워크를 Java로 구성하였기 때문에 다른 언어들을 사용하기 힘들어진 게 아니라, 이미 Java와 Spring 프래임워크의 사용비율이 꽤나 높았기 때문에 전자정부 프래임워크를 구성할 때 이를 기반으로 만들었다고 봐야 합니다. 저 역시 전자정부 프래임워크가 탄생하기 이전부터 공공사업을 많이 했었고, ASP/PHP/JSP 웹 삼대장이라고 불리는 개발언어들이 주역일 때부터 지켜봤기 때문에 압니다. Windows 종속적이고 개발사인 MS 조차 포기한 ASP(Classic ASP라 불리는), 개인용 홈페이지 개발용으로 만들어져서인지 몰라도 뭔가 난잡하고 Linux에 비해 Windows에서는 속도가 너무 느리고 MySQL이라는 DBMS을 주력으로 내세우는 등 뭔가 주류시장에서 쓰이기에는 아쉬운 PHP에 비해, JSP라고 흔히 부르던 Java 웹개발 환경에서는 JDBC를 통해 Oracle Client 설치 없이도 쉽게 DBMS에 접속할 수 있었고 Java 생태계에서 양질의 Library를 쉽게 제공받을 수 있었으며, 오류 시 자세하게 나오는 StackTrace라던지, 필요에 의해 선택할 수 있는 유료 WAS와 같이 사업적인 측면에서 훨씬 매력적이었습니다. 그래서 공공사업에서는 점점 JSP의 비중이 절대적으로 올라가고 있었기 때문에 전자정부 프래임워크가 만들어지지 않았어도 지금과 비슷한 수준으로 Java와 Spring으로 프로그램들이 개발되어 운영되었을 것입니다.
그리고, 이런 정부 시스템은 레거시 시스템이 아주 많습니다. 새롭게 만들면서 기존 것을 다 엎어버리는(기존 내용을 다 지운다거나) 일이 드뭅니다. 주민등록등본 시스템을 만들었는데, 새로운 주민등록등본 시스템을 만든다고 기존 주민등록등본 내용을 모두 지운다면 어떤 일이 발생할까요? 끔찍한 일이 되겠죠? 그래서 기존 시스템이 무엇으로 만들어졌는지는 매우 중요합니다. 처음부터 새로 다 만들지도 않기 때문이죠. 기존 시스템이 아무리 조악하다 해도 운영되는 동안 해결된 수정들은 시간과 비용을 들여 안정화를 한 결과물입니다. 새롭게 시스템을 만들면 이러한 안정화는 또다시 해야 하며, 안정화 과정 동안 프로그램은 또 누더기가 되니까요.
마지막으로...
반박 시... 여러분 말이 맞습니다.
'Programming > 프로그래밍 잡설' 카테고리의 다른 글
백엔드는 Query 날리고(실행하고) 결과만 던져주는 것만 알면 된다? (0) | 2023.12.19 |
---|---|
프로그래머 초봉 6000에 대한 단상 (0) | 2023.12.19 |
Java는 악의 축, 쓰레기인가? - 2. 높은 메모리 사용량, 실행파일 용량, 컨테이너 비친화적, 신기술 적용이 느림 점 (0) | 2023.12.04 |
JPA(ORM)는 "절대선(善)"인가? (4) | 2023.11.28 |
JWT을 이용한 token 기반 인증 체계에 대한 개인적인 잡설 (4) | 2023.11.27 |
- Total
- Today
- Yesterday
- Spring Boot
- 내장 WAS
- 시니어 프로그래머
- 도입기
- boot
- Nas
- Spring MVC
- Phabricator
- 외장 WAS
- couchbase
- paging
- 프로젝트 규모
- Spring
- RestTemplate
- jooq
- 클라우드플레어
- 워드프레스
- messages.properties
- Redmine
- manjaro
- OracleJDK
- git
- docker
- java config
- SI
- NoSQL
- 엘지
- KDE
- 페이징
- proxmox
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |