11P by regentag 1일전 | favorite | 댓글 54개

“프로그래밍 언어에는 두 가지 종류가 있습니다. 사람들이 불평하는 언어와 아무도 사용하지 않는 언어입니다.” — Bjarne Stroustrup.

“Java를 비판하고 불평하는 사람들은 대개 젊고, 다른 어떤 것보다 JavaScript에 더 많이 노출되어 있는 것 같습니다. JS에 비해 Java는 약간 무겁고 제한적일 수 있습니다. 보일러플레이트가 곳곳에 있고, 컴파일러가 엄격하게 적용하는 타입 시스템 등이 있습니다. 하지만 선택권이 있다면 JS보다는 최적이 아닌 Java 코드베이스를 선택할 것입니다. 의심의 여지가 없습니다.”

“수십 또는 수백 개의 파일에 분산된 코드를 다루는 실제 경험을 쌓은 후에야 Java의 소위 '제한'이 실제로는 발에 총을 쏘는 것을 막는 보호 장치라는 것을 깨닫기 시작합니다.”

“Java를 발견하고 다시 전환하는 것은 계시와도 같았습니다. 저는 Java와 그 생태계를 사랑한다는 것을 깨달았습니다. 그래서 Java 생태계에 대한 제가 가장 좋아하는 몇 가지를 적어두기로 했습니다. 그러니 누군가가 Java를 비난한다면, 그들이 왜 틀렸는지 말해줄 25가지 이유가 있습니다.”

  1. 성숙한 생태계
  2. WRITE ONCE, RUN EVERYWHERE
  3. 이전 버전과의 호환성 (Backward compatiblity)
  4. 강 타입(Strongly Typed) 언어
  5. 빠른 릴리스 주기, 지속적인 개선
  6. 좋은 IDE들
  7. GraalVM의 Native Image 지원
  8. 오픈 소스 라이브러리와 프레임워크들
  9. 멀티쓰레딩
  10. 성숙한 객체 지향
  11. 메모리 관리와 가비지 컬렉션
  12. 관찰성(Observability)과 모니터링
  13. 함수형 프로그래밍 지원
  14. 풍부한 문서
  15. 빌드 도구와 의존성 관리
  16. 강력한 테스트 기능
  17. 거대한 커뮤니티
  18. 어노테이션
  19. 보안 기능
  20. 풍부한 API 세트
  21. 성능
  22. 구조화된 병행성
  23. 가상 쓰레드
  24. Switch 문을 위한 패턴 매칭
  25. 문자열 템플릿

대부분의 이유들은 현대 여타 언어들의 생태계와 비교하였을 때
그다지 강점이 아니며, 작성자는 스프링과 자바에 대해서 분리하지않고 글을 작성한 듯 싶네요

Java라는 언어는 개발 환경이 잘 되어 있으니 선호하는 게 당연합니다.

마찬가지로 그 환경 내에서만 일해야 퍼포먼스를 낼 수 있어서 그 환경에서만 일하고 싶은데 다른 환경을 요청하면 반감도 들고요.

다만 앞으로 이런 언어들이 AI 가 더 코당을 잘 할 것이고 자신의 편한 환경보다 다양한 환경에서도 살아남을 적응력이 그 어느 때보다도 필요하다 보입니다.

그런 면에서 다양한 언어의 적응력은 이제 선택이 아닌 필수 같아요.

선생님들 Java 얘기 나와서 하는 말인데... Go는 어떻습니까? 저는 Java 보단 사실 Kotlin이 더 좋긴 한데, Gradle로 맛본 좌절감이 너무 많아서 그냥 Go로 정착중이거든요. 짧게나마 써 본 입장에서는 Java가 필요한 곳 어디든 Go로도 커버 가능하지 않을까? 하는 생각이 들었습니다.

JS/TS의 경우 저도 좋아하긴 하는데 아무리 그래도 Java랑 동일 선상에 놓고 비교하는 건 좀 무리가 있지 않을까 싶습니다. 어쨌든 싱글스레드의 제약은 있는거고, pm2등으로 멀티 프로세싱을 한다고는 하는데 Java도 virtual thread 잘되어 있고 사실 이게 더 낫다고 생각하거든요. 물론 이렇게 사고가 흘러가다가 고루틴 보고 저는 Go로 정착하긴 했는데... ㅎㅎㅎ;;

필요에 따라서 적재적소에 언어를 활용하는 게 좋다고 생각합니다. 저는 2024년인 지금도 여전히 PHP언어 사랑하고, JS, Java(Kotlin) 역시 Go만큼은 아니지만 애정합니다. 언어는 도구니까, 도구 목적에 맞게만 잘 쓰면 되지 않을까 하여 댓글 남겨봅니다.

싱글스레드의 제약은 있다하더라도, 컨테이너 감싸서 하나의 팟 당 cpu 별로 안잡아먹게끔 해서 오케스트레이션하는 시대에서는 그 제약이 그렇게 큰가? 라는 생각밖에 들지않네요

예전처럼 하나의 서버에 여러 컨테이너를 띄우는 대신, 그 컨테이너가 cpu를 많이 잡아먹었다면 모를까요

대부분의 웹서버의 경우 cpu를 많이 잡아먹지않고 IO 쓰루풋이 많은만큼 노드도 하나의 선택지로써 다뤄질 수 있다고 생각이 드네요

물론 cpu가 많이 드는 도메인이라면 이건 다른 언어를 고려해보거나, napi를 통하여 네이티브 코드를 불러올 수도 있겠죠

고루틴으로 비동기작업이 잘 추상화되어 있는 특징이 있어서 비동기작업에 유용한 언어라고 생각합니다. Rust나 python의 비동기 코드는 생각을 너무 많이 한 경우 같아요. 작성하기에도 읽기에도 인지 부하가 높은 편인 것 같습니다

저는 generic이 포함되기 전의 Go만 써봤는데, 훌륭한 언어라고 생각합니다. 초기에는 도구가 정말 별로였지만 많이 발전했더라구요.

문법이 투박하지만 그래서 쉽게 배워지고요.

토론이 과열되고 있습니다.
반론이 있다면 그 내용만을 적어주세요.
사이트 이용법에 어긋나는 댓글은 삭제 처리하였습니다.
또한 이용법에 맞지않는 활동이 반복적인 아이디를 차단하였으니 참고하시기 바랍니다.
건전한 토론을 부탁드립니다.

자바를 비판하는게 아니라, 자바가 짜증나는 이유는 자바 개발자만 유독 다른 언어 개발자들 비하하고 비교하고 기이한 자바부심이 있기 때문임. 자바를 좋아하지만, 왜들 그러는지 모르겠음. 언어마다 철학이 있고, 장단점이 있고, 생태계가 다른것 뿐인데, 이상한 자바부심을 돌발적으로 드러내서 비호감을 보임.

자바 개발자한테 짜증을 내셔야하는데 자바에게 내버리는...

그건 그쪽 문해력이…

자바가 짜증나는 이유는

문해력이 뭔지도 모르는듯?

제가 답변안해도 다른분이 적어주셨네요

자바 개발자의 자바 부심의 대한 근거로 제시할 자료가 필요해 보입니다. 제시하기 어렵다면 이는 받아들이기 어려운 주장이라고 생각합니다.

어떤 언어나 도구에도 그런 사람들이 있기 마련인것 같습니다. 자바는 출시 당시에 C/C++에 비해 힙한 언어이면서도 기업용으로 널리 사용되면서 개발자의 풀이 커서 더 눈에 띄는게 아닌가 합니다.

그리고 요즘은 Rust 개발자들이 그 역할을 하는것 같더라구요.

놀랍게도 자바가 주류가 된 이유는 마케팅에 엄청난 비용을 사용했기 때문입니다ㅋㅋㅋㅋ
https://www.youtube.com/watch?v=NVuTBL09Dn4

언어가 어떻게 주류가 되는지에 대한 유튜브 비디오가 있는데 다른 분들도 보시면 흥미로울 거에요!
https://www.youtube.com/watch?v=QyJZzq0v7Z4

이정도면 자바는 종교인거같아요.
Java를 비판하고 불평하는 사람들은 대개 젊고, 다른 어떤 것보다 JavaScript에 더 많이 노출되어 있는 것 같습니다.
라는 말을 반대로 풀어보면 그만큼 js를 써본사람들은 java가 별로라고 경험했다는 얘기인것이기도 합니다.
왜 그 각각의 장단점이 있다는 사실을 인정하지않고 java가 낫다라는 이야기만...
document db 안써보고 그냥 특징 이런거 상관없이 sql이 좋다는 사람들이 있는것과 비슷하네요.

이미 java를 많이 쓰고 있던 상황이 있었고 많은 선배개발자들이 java만 할줄알고 그사람들이 바꾸고싶어하지 않기 때문에 못바꾸고 있다란 사실은 빼놓고 생각하는거같네요. 지금 시점에서 보면 java만의 강점은 거의 없는 수준이라고 생각합니다.

오랜 경험상으론 Python 이랑 JS가 광신자 비율이 더 많다고 생각합니다.

python을 좋아하는 분들은 python이 좋은 언어라고 주장하지 않습니다. js도 언어가 좋다고 우기는 분들은 없어요. python이나 js나 특정한 분야에서 개발을 하기에 생태계가 좋은 것일 뿐이죠. 유독 java 분들만 무조건 좋다고 우기는 느낌..

굳이 자바를 변호해보자면, 반대로 자바만 유독 이런저런 이유로 많이 놀림감이 되기도 하는 듯 해요. 모두에게 친숙한 동네 삼촌 포지션...?

그건 아마 Java 언어 대신 JS/Python 을 어필을 해야하는 입장이라 좀 더 주장이 많다고 느껴지실 수 있다고 봐요.

개인적으로는 Java 말고 아에 다른 언어를 생각조차 못하는 분들을 좀 보긴 했어요. 그 외 언어 하시던 분들은 대부분 상황따라 다른 언어를 이용할 의지가 있더라고요.

첫 언어가 자바면 그럴 수도 있겠다는 생각은 듭니다만 그런 경우를 주변에서 한번도 못봐서 상상이 잘 안가네요.

저도 대학 입학하고 수업에서 처음으로 배운 언어가 C++이고 학년 올라가면서 다른 언어들을 자연스럽게 접했다보니 새로운 언어 배우는 것에 그렇게 부담을 갖고 있진 않습니다만... 사실 기본적인 문법(변수 선언, 제어문, 함수 등)은 다들 비슷비슷하니까요.

그런 경우는 아마도 언어를 처음에 배울때 너무 협소하게 배워서 스펙트럼이 좁아진게 아닐까 싶습니다. 그리고 그런건 딥러닝이나 수리통계 목적으로 파이썬을 첫 언어로 접한 분들한테서 더 많이 봤습니다. 저도 그렇고 양쪽 다 경험담이니 둘 다 맞는 말이겠죠.

저도 비슷한 경험을 해서 같은 생각입니다

오히려 읽으면서 음.. 닷넷이 더 낫지 않나? 라는 생각 밖에 안드는군요

윈도우 응용프로그램만 만든다면 MS생태계 이점이 많아서 좋지만 리눅스나 맥OS 에선 자바보다 나을게 없다 봅니다. MS에서 뒤늦게 지원을 하지만 굳이 써야할 이유가 없죠. 시기가 안좋은

더이상 .net framework 시절의 닷넷이 아닌데 윈도우 어플리케이션에 한정 짓나요
이미 여러분들이 손에 쥐고 있는 휴대전화에서 닷넷 기반 게임 엔진이 돌아가고 있는걸요;

저도 C#을 좋아하긴 하지만, 윈도가 아닌 환경에서는 굳이 써야하나 싶습니다.

위 댓글과 마찬가지의 내용입니다. 그 시절 끝난지 정말 오래됐습니다.
MS의 뒤늦은 선택이 사람들의 인식을 이렇게 망쳐놨네요.

국내는 채용의 이점도 있고 전자정부프레임워크도 있고 자바공화국이란 말이 나올 정도라서 자바 개발자분들이 많은데요.
기업에서 타 언어에서 자바로 전환하는 경우도 많은데 경험상 일부? 자바 개발자분들은 자바만 하고 싶어 하시더라고요.
기존에 구축된 타 언어가 문제다, 자바로 전환해야 한다면서요. 근데 또 코틀린도 하기 싫어하시구요.
뭔가 새로운 것을 배우는 것에 대한 거부감이 있어 보였어요. 굳이 자바로 다 하면 되는데 왜?라는 느낌

자바의 강타입은 좋아하면서 강타입의 혜택인
제네릭 싫어하는 개발자 본 적 있습니까? 저는 실제로 제 면상에서 그렇게 대놓고 주장하는 사람을 봤습니다. 어메이징 SI 입니다.

SI 하는 분들은 제네릭 안쓰시지 않나요?

요즘 자바관련 내용을 구글에 검색하면
학원에서 배운 똑같은 내용의 한글 블로그글들이 쏟아져나와서
재대로된 레퍼런스를 찾기 힘들어서 짜증이 납니다.

구글 검색이 많이 안좋아졌죠...

18, 25, 20, 10, 8, 6, 5, 3, 2, 1, 등등은 자바만의 전유물이 아님. 잘못된 비교

지금 보니 자바도 이런 기능들이 있고 비난받을 이유가 없다는 것이지, 자바에서만 되니까 자바를 쓰라는 이야기는 아닌것 같아요.

Entries web app을 만들어야 하면 무조건 java를 쓸듯. 1번만으로 끝나는 거라서... 간단한 개발, 빠른 개발이면 파이썬이 좋은 것 같고. Js는... 난 번잡해서 짜증나던데

자바를 할거면 kotlin 을 하겠고, 자바라는 랭기지보단 닷넷계열 랭기지가 코틀린의 발전에 따라가주는 랭기지라고 판단합니다.
자바는 예전에 자바로 구축해놓은 관공서 서버 유지보수 언어로 남아있는것이 좋을듯, 한국의 ceo 분들이 광고에서본 자바라는 단에에 익숙해서 자바를 고집하는 경향이 있죠. Kotlin, .net 을 경험해보고 자바를 고려해보세요.

싸우지 마세여....

moderator | 사이트 이용법에 맞지 않아 삭제되었습니다.

자바 1.8은 정말 훌륭한 버전이죠!

moderator | 사이트 이용법에 맞지 않아 삭제되었습니다.

write once run everywhere 는 이제 좀 놔줄 때도 되지 않나 싶은 표어라고 생각합니다.. ㅋㅋ

그렇지만 그것이 자바인걸요! ㅋㅋㅋ

IDEA에서 자바로 코딩하는건 즐거운데, IDEA 없었으면 불행했을겁니다. (불행했었고요)

문득, 자바로 만들어진 이클립스와 자바스크립트(타입스크립트)로 만들어진 VSCode 가 떠올랐다면... 잘못된 비교일까요. 물론 기능은 이클립스가 더 많습니다.

잘못된 비교입니다..
나온 시기를 봐야죠.
이클립스가 나오고 한동안은 이클립스가 지금의 vscode와 같은 위상을 가지고 있었죠.
저도 이클립스 정말 쓰기 불편해서 안쓰지만
그 당시엔 쓸만한 선택지가 이클립스밖에 없었어요.

네. 잘못된 비교입니다. 물론 그 두 도구의 특성부터 차이가 있지만, 언어 특성과 생태계를 비교해도 다르죠.
런타임을 제외하고 얘기하자면,
이클립스는 백엔드와 프론트엔드 모두 순 자바로 만든 도구입니다.
vsc는 보이는 프론트엔드야 순 자바스크립트(물론 웹 기반)지만, 이를 지탱하는 백엔드(네, 그 일렉트론)는 C 같은 네이티브를 쓰죠.

일렉트론앱의 백엔드는 자바스크립트가 맞죠.. 메인 프로세스, 렌더러 프로세스 따로 돌아가지만 둘다 자바스크립트 코드로 동작하는걸요

마찬가지로 JVM도 결국 네이티브로 구현된 런타임아닌가요?

자바스크립트의 강점은 v8엔진을 구글이 관리하고 있다는 것이죠.
버려진 java..

moderator | 사이트 이용법에 맞지 않아 삭제되었습니다.