스프링 부트를 개발하는 데 필요한 프로그램 설치부터 스프링 부트의 구조에 대한 설명, JPA를 이용해 데이터를 다루는 법까지 익혀봅니다. 이해하기 어려운 개념 설명보다는 코드를 작성하고 개별 코드를 설명하는 방식으로 진행하므로 초보자 분들도 보다 쉽게 다가가실 수 있으리라 생각합니다. 또한 스프링 MVC와 스프링 부트 차이에 따른 개발 방식에 대해서도 설명하므로 기존에 스프링 MVC를 사용하셨던 분들이 스프링 부트에 적응하시는 데도 도움이 되시리라 믿습니다.
국내 자바 웹 개발 트렌드는 스프링 MVC에서 스프링 부트로 많이 넘어갔다고 생각합니다. 물론 이미 기존에 스프링 MVC로 구축된 프로젝트의 경우는 어쩔 수 없겠지만, 신규로 개발하는 경우 보다 설정이 간단한 스프링 부트 프로젝트를 많이 쓰는 추세입니다.
사람들이 여전히 Java가 오늘날과 관련이 있다고 생각하는 것은 일반적인 오해입니다.실제로 Java는 죽어가는 프로그래밍 언어입니다.Java는 세계에서 가장 널리 사용되고 널리 사용되는 프로그래밍 언어 중 하나이지만 곧 사라질 위험에 처해 있습니다.오늘날 Java는 크고 활발한 개발자 커뮤니티를 보유하고 있으며 웹 개발, 모바일 앱 개발 및 엔터프라이즈 수준 소프트웨어 개발을 포함한 광범위한 애플리케이션에 여전히 사용되고 있지만 Java가 향후 10년 동안 살아남을 수 있을까요?개발자가 Java에 대해 가지고 있는 오해를 알아보겠습니다.
오해 1: Java에는 크고 활발한 개발자 커뮤니티가 있습니다.전 세계에 수백만 명의 Java 개발자가 있으며 언어는 개발자가 지식과 리소스를 공유하는 온라인 포럼 및 커뮤니티에서 강력한 입지를 확보하고 있습니다.
이것이 계속해서 사실이지만, 개발자들이 다른 플랫폼과 프로그래밍 언어로 이동하는 속도를 보면 알 수 있으며 개인적으로 개발자들이 패닉에 빠지는 것을 보았습니다.주요 문제는 프로그래밍 언어로서의 Java가 현대화되지 않았기 때문에 여전히 장황하게 남아 있고, 불안정하지만 매우 투박한 유형 시스템을 가짐으로써 정적 유형과 동적 유형 사이의 최악의 두 세계를 결합하고, VM에서 실행해야 한다는 것입니다. 거시적인 시작 시간(오래 실행되는 서버에는 문제가 되지 않지만 명령줄 응용 프로그램에는 문제가 됨).요즘에는 꽤 잘 수행되지만 여전히 C 또는 C++에 비해 경쟁력이 없으며 약간의 사랑으로 C#, Go, Rust 및 Python이 해당 도메인에서 이를 능가할 수 있습니다.실제 프로덕션 서버의 경우
오해 2: Java는 광범위한 응용 프로그램에 사용됩니다.Java는 웹 개발 언어일 뿐만 아니라 모바일 앱, 게임 및 엔터프라이즈급 소프트웨어 개발에도 사용됩니다.이러한 다양성으로 인해 다양한 유형의 프로젝트에 유용한 언어가 됩니다.
Java는 더 이상 모바일 애플리케이션 개발, 특히 Android에서 선호하는 프로그래밍 언어가 아닙니다.Kotlin은 이제 Android를 지배하고 대부분의 Android 개발자는 오래 전에 배를 뛰어 넘었습니다.구글조차도 몇 년 전 오라클과의 실패로 인해 안드로이드용 사실상의 언어로서 자바를 포기했습니다.Java는 오래 전에 웹 개발 언어로서의 인기도 잃었습니다.엔터프라이즈 개발에 관한 한 Java는 신뢰할 수 있고 안정적이기 때문에 여전히 대기업과 관련이 있습니다.많은 신생 기업이 엔터프라이즈 소프트웨어의 첫 번째 선택으로 Java를 사용하지 않고 다른 대안을 사용하고 있습니다.
오해 3: Java는 기본 언어입니다.많은 최신 프로그래밍 언어는 Java의 원칙과 개념을 기반으로 구축되었으며 어떤 방식으로든 Java와 호환되도록 설계되었습니다.즉, Java의 인기가 떨어지더라도 Java의 원칙과 개념은 계속 유효할 것입니다.
Java가 프로그래밍 여정을 시작하는 많은 사람들에게 기본 언어라는 것은 사실일 수 있지만 Java는 계속해서 매우 구식이고 융통성이 없다는 사실이 남아 있습니다.게다가 다른 최신 프로그래밍 언어와 비교할 때 여전히 장황합니다. 즉, 특정 작업을 수행하려면 많은 코드가 필요합니다.이로 인해 간결하고 우아한 코드를 작성하기가 더 어려워질 수 있으며 대규모 코드베이스를 유지 관리하는 데 더 많은 노력이 필요할 수 있습니다.또한 Java가 정적으로 유형이 지정된다는 사실은 Java가 동적으로 유형이 지정되는 언어보다 더 엄격하고 덜 유연할 수 있음을 의미하므로 일부 개발자에게는 실망스러울 수 있습니다.
오해 4:Java는 주요 회사의 강력한 지원을 받고 있습니다.Java를 유지 관리하고 지원하는 회사인 Oracle은 언어에 대한 강한 의지를 가지고 있으며 개발 및 개선에 지속적으로 투자하고 있습니다.또한 Google 및 Amazon을 비롯한 많은 주요 회사에서 제품 및 서비스에 Java를 사용합니다.
Oracle은 빠른 속도로 Java 시장 점유율을 경쟁자에게 빼앗기고 있습니다.아래 그래프를 참조하십시오.
아래 차트는 Oracle이 여전히 시장에서 가장 큰 점유율을 차지하고 있음을 보여주지만 그 점유율은 절반 이상 감소했습니다.2020년 Oracle은 "Java 시장의 약 75%"를 차지했지만 현재는 35% 미만입니다.
2021년 11월 Java 17이 출시된 이후 Eclipse Adoptium과 거의 비슷한 점유율을 기록하며 2위를 차지한 것은 New Relic의 수치에 따르면 Amazon입니다.
오해 5:Java는 학교와 대학에서 널리 가르칩니다.Java는 프로그래밍 개념을 가르치는 데 널리 사용되는 언어이며 학교 및 대학의 컴퓨터 과학 커리큘럼에서 자주 사용됩니다.이는 Java를 배우고 그 기능에 익숙해지는 새로운 개발자의 꾸준한 흐름이 있음을 의미합니다.
이것은 크게 변화하고 있습니다.소프트웨어 개발자를 꿈꾸는 젊은 대학생들은 빠르게 다른 프로그래밍 언어로 옮겨가고 있습니다.이로 인해 이러한 다른 프로그래밍 언어에 대한 대중적인 수요로 인해 대학에서 대안을 찾는 일이 점점 더 많아지고 있습니다.
나는 이것이 논란의 여지가 있는 주제라는 것을 안다.저는 여전히 Java를 소프트웨어 작성 방식을 혁신하고 따라야 할 다른 프로그래밍 언어에 대한 벤치마크를 만든 언어로 생각합니다.불행하게도 언어의 소유권은 많은 금전적 이익을 남기지 않고 계속 개선할 의욕이 없는 회사의 손에 있습니다.Java는 곧 사라지지 않지만 몇 년 안에 관련성을 잃을 심각한 위험에 처해 있습니다.
한 IT 공공기관이 소프트웨어(SW) 개발자 온라인 채용박람회를 진행하는 가운데 안내 포스터에 SW개발자를 새벽 인력시장 인부에 비유한 이미지를 사용해 물의를 빚고있다.
판교창업존 운영기관인 경기창조경제혁신센터가 진행하는 '스타트업DNA-623 오픈런' 온라인 채용박람회 포스터다. 중소벤처기업부와 창업진흥원이 후원하는 이 행사는 스타트업들로부터 구인신청을 받고 이후 취업을 희망하는 구직자가 지원서를 제출하면 온라인상에서 매칭해주는 채용이벤트다.
하지만 좋은 취지와 달리 행사 안내포스터에 마치 영등포나 구로 새벽 인력시장에서 개발자를 픽업하는 듯한 이미지를 사용해 구설에 올랐다. 특히 "자바 두명 타세요"라는 문구는 이미 수년전부터 개발자들의 열악한 처우를 건설인부의 속칭 '노가다'(건축 및 토목노동자를 의미하는 일본어 유례 속어)에 비유한 사례로 회자돼 온 것이다.
최근 4차 산업혁명과 비대면 열풍으로 AI(인공지능)과 클라우드, 블록체인 등 SW시스템 개발 수요가 폭증하면서 개발자 부족현상이 심화되는 현실과도 맞지않다는 지적이다.
한 SW개발자는 "개발자 채용박람회라하면서 국가가 나서서 저런 인력시장 그림을 갖다 붙이는 것은 너무한 것 아니냐"면서 "오픈런이라는게 도망가라는 뜻인가? 개발자를 조롱하는 것같다"고 질타했다.
개발자 커뮤니티 오키의 노상범 대표는 "나름 유머라고 생각한 모양인데 담당자의 IT에 대한 인식수준이 저것밖에 안되나 싶다"고 꼬집었다.
경기창조경제혁신센터도 이같은 지적이 일자 포스터 이미지를 교체했다. 센터 관계자는 "개발자들을 모신다는 의미로 비하할 의도는 없었는데 잘못 전달된 것 같다"면서 "일부 지적이 있어 어제 바로 포스터 이미지를 교체했다"고 밝혔다.
> from konlpy.tag import Kkma
> tokenizer = Kkma()
이러면 jvm 에러 계속 발생했는데...
No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly , line 91, in __init__ jvm.init_jvm(jvmpath, max_heap_size)
, line 55, in init_jvm jvmpath = jvmpath or jpype.getDefaultJVMPath()
, line 74, in getDefaultJVMPath return finder.get_jvm_path()
, line 212, in get_jvm_path raise JVMNotFoundException("No JVM shared library file ({0}) "
jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly.