요즘 회사에서는 Next.js 를 주로 다루고 있다. 백엔드는 Nest.js 를 이용하고, 내가 node 즉, javascript 를 제대로 시작한지 어느덧 10개월정도, 곧 있으면 1년을 채우게 된다.
현재 우리나라에서는 백엔드 언어는 java 가 압도적이다. 정확히 말하면 큰규모의 대기업에서는 java 라는 언어가 압도적으로 많이 사용된다.
그렇다 나는 본 개발자의 목저은 서버개발자, 즉 백엔드 개발자 이다. 하지만 현재 회사에서는 풀스텍이지만, 퍼블리싱, 프론트엔드, 백엔드 까지 전부다 담당하고 있다. 그러다 보니 하나의 전문성은 더욱더 떨어져 가고 있는 실정, 또한 학교수업과 회사일을 핑계로 그동안 공부를 소흘히 하던 나에게 큰 변화점이 필요했다. 지금이 딱 좋은 시기라고 생각한다.
자바는 고도의 분산형 구조에 적합한 능률적인 프로그래밍 방식을 제공한다. 자바는 1991년, Sun Microsystems의 제임스 고슬링(James Gosling,) 패트릭 노튼(Patrick Naughton), 크리스 와츠(Chris Warth), 에드 프랭크(Ed Frank), 그리고 마이크 쉐리든(Mike Sheridan)에 의해 창안되었다.
자바는 C언어에 객체 지향적 기능을 추가하여 만든 C++과 달리, 처음부터 객체 지향 언어로 개발된 프로그래밍 언어이다. 자바는 자바 가상 머신(JVM, Java Virtual Machine)을 사용하여 운영체제와 독립적으로 동작할 수 있다.
따라서 자바는 어느 운영체제에서나 같은 형태로 실행 될 수 있다.
자바의 개발자들은 유닉스(Unix) 기반의 배경을 가지고 있었기 때문에 문법적인 특성은 파스칼이 아닌 C++의 조상인 C 언어와 비슷합니다. 그리고 C 에 객체 지향적 기능을 추가하여 만든 C++과는 달리, 처음부터 객체 지향 언어로 개발된 프로그래밍 언어죠.
위에서 자바를 만든 이유에서 설명했듯 자바의 가장 큰 특징은 컴파일된 코드가 플랫폼(또는 OS)와 CPU에 독립적이라는 점입니다. 자바 컴파일러(Java compiler)는 자바 코드를 자바 바이트코드(Java bytecode)라는 특수한 바이너리 형태로 변환합니다. 자바 바이트코드를 실행하기 위해서는 JVM(Java Virtual Machine)이라는 특수한 가상 머신이 필요한데, 이 가상 머신은 자바 바이트코드를 어느 플랫폼에서나 동일한 형태로 실행시킬 수 있습니다. 때문에 자바로 개발된 프로그램은 CPU나 운영 체제의 종류에 관계없이 JVM을 설치할 수 있는 시스템에서는 어디서나 실행할 수 있으며, 이 점이 웹 애플리케이션의 특성과 맞아떨어져 폭발적인 인기를 끌게 되었습니다.
👉 java는 운영체제에 독립적이다.
👉 java는 객체지향 언이다
👉 java는 비교적 배우기 쉽다.
👉 java는 자동 메모리 관리 (GC를 자동으로, 해줌 python처럼)
👉 속도가 느림
자바는 실행을 위해 자바 가상 머신을 거쳐야 하므로, 다른 언어에 비해 실행 속도가 느려서 처리 속도가 중요한 애플리케이션에는 적합하지 않다.
하지만 바이트코드(byte code)를 하드웨어의 기계어로 변환해주는 JIT컴파일러와 Hotspot(향상된 최적화 기술)과 같은 기술 적용으로 JVM 기능이 향상되어 속도문제가 개선되었다.
👉 불편함 예외처리
자바는 예외 처리가 잘 되어 있지만, 개발자가 일일이 지정해 줘야 한다는 불편함도 있다. 그렇게 하지 않으면, 컴파일조차 거부된다.
👉 하드웨어 정밀 조정 불가
하드웨어에 연결할 수 없기 때문에 직접 하드웨어를 정밀하게 조정해야 하는 프로그램 개발에는 적합하지 않다.
java의 관한 객체지향 이나, 기본적인 객체(object), 클래스(class) 같은 개념들은 이미 선행학습이 어느정도 되있기에, 해당 블로그에서는 프로그래밍에 대한 정리를 주로 할 예정이다.
nest.js 를 사용했던 나였기에 어느정도는 java의 문법이 익숙하다. 그렇다고 해서 기초를 넘어가고 들어갈 생각은 없다. 그러길 원햇다면 나는 남궁민 선생님의 Java의 정석을 사지 않았을 것이다.
사실 처음 책의 두께를 봤을때 좀 당황했었다. 그리고 책이 2권이나 와서 순간 잘못보낸건가 싶었는데, 500페이지 정도의 양의 책 두권이 Java의 정석이다.
끝으로 그동안 조금은 소흘히 공부했던 지난날의 나를 반성하며, java를 공부하면서 백엔드 공부를 시작하고, 코딩테스트 도 앞으로 java로 같이 준비해볼 예정이다.