나는 처음에 자바 혐오자였다

C/C++처럼 메모리 주소를 직접 컨트롤 할 수 있는 부분에서 변태같이 메달렸고

C게열이 좋았음 지금은 자바함


안드로이드 개발하는데 안드로이드 스튜디오 개발환경 권장 8~16GB인데 4GB에서 작업하다가

펑 터진적 많아서 씹극혐하고 있음 지금 자바를 하고있지만 안드로이드는 극혐함


어쨋든간에 서론 때려치우고 본론으로 들어가면 나무위키 읽고 소감 써봄


처음에 자바를 javac 로 접하고 날코딩하고 IDE인 이클립스로 가겠지

나 또한 그런 커리큘럼을 타고 c언어 기본기가 있었기에 자바를 빠르게 습득할 수 있었음


근데 자바 처음 배운사람들의 문제는 java로 절차지향 코딩을 한다는게 문제임

클래스가 단순히 구조체의 확장판이라고 생각하고 사용함(내가 그랬음)


자바 책 한 5번정도 정독하고나면 객체지향의 특성들이 보인단 말이지

인터페이스, 상속, 다형성, 예외처리, 직렬화, 추상클래스 등등


객체지향 특성좀 알게되면 아 나 이제 자바좀 하는구나

객체지향좀 하는구나 자만에 빠지게됨

사실 좆도 없는데 말이야


그러다가 자바로 뭘 할 수 있나? 찾아보니깐

웹/앱 밖에 없다는거야 앱은 극혐이라서 웹으로 입문하기 시작했지


jsp/servlet을 하라네 그래서 했지

하면서 딱히 뭐 객체지향특성을 사용하는건 알겠는데

왜 이걸 쓰는지 이점을 몸에 와닿지도 않음

그냥 예외처리하고 상속해서 쓰는구나 이정도?

그냥 쓰면 이런 부분에서 좋구나 하고 넘어감


MVC model2 들어가면 아 개발자랑 디자이너 역할분담해야되는구나

그렇구나 이러고 넘어가고 결국 최종 목적지인 spring에 도달하게됨


spirng에 입문하게 되면 난해한 용어들이 처음부터 나타나게 된다


inversion of Control(역전의 제어)

Dependency Injection(의존성 주입)

Plain Old Java Object(POJO)

Aspect Oriented Programming(AOP)

Separation of Concerns(관심사 분리)

...


존나 멘붕오지만 꾸역꾸역 하다보면 느끼게 된다

확실하게 확장성과 유연성에 대한 이점이 몸에 와닿는다

이게 객체의 진정한 아름다움이구나

추상화라는게 이런것이구나...


IoC/DI 개념 자체가

리팩토링이랑 객체지향설계 핵심에 맞춰진 프로그래밍 모델이다 보니

어쩔 수 없이 리팩토링이랑 객체지향설계 디자인패턴을 공부하게 됨


이거 공부하면서 점점 객체지향의 근본을 알아가기 시작하지

고급프로그래머가 되는거 같은 기분과 국비충 지잡충과 다르다는

우월감에 빠지게 된다.

차별화된 기분이랄까...?


근데 할게 존나 많아요

나무위키 말대로 진짜 자바를 제대로 공부하면 학습량이 산더미임

java, ide, 메이븐, Git, JDBC, Spring JDBC, Mybatis framework

리팩토링, TDD, 디자인패턴, html, css, js, jquery, jsp/servlet

orm, jpa, hibernate 등등


어찌됬든 내가 스프링 프레임워크를 빠는 이유는 

객체의 근본적인 아름다움을 느낄 수 있음에 있다


그런 아름다움을 느끼려면 스프링을 시작하라!


python도 해보고

gpgpu한다고 cuda 플랫폼도 써보고

c#도 해보고

c++도 해보고

c도 해봤는데


나한테 맞는건 java계열 웹개발이더라고



그래서 나는 웹땔감이 되기로 마음 먹었다