기계어, 어셈블리어, C언어, JAVA의 차이를 알아보고자 한다.
그런데 사실 자바를 학습하면서 아주 짧게 포스팅한 적이 있었다. 글을 다시 확인해보니 프로그래밍에 대한
이해가 낮았던 때라서 내가 이해할 수 있는 정도로만 포스팅하였다.
그래서 그 부분을 다시 고쳐가면서 재 포스팅을 하려고 한다.
컴퓨터의 언어표현방법은 0과 1뿐이다. 그런 컴퓨터와 소통하기 위해 사용하는 언어는 0과1로 이루어진 기계어이다. 🤮
우리가 사용하는 언어로 기계어에 니모닉을 일대일로 매칭해 표현 한 것이다.
😊 이제 0과 1이 아닌 인간의 언어로 컴퓨터와 소통하게 되었으니 좋은걸?
🤮 그런데 컴퓨터별로 니모닉이 다르니까 스트레스야…!!
운영체제와 독립적으로 코드(소스파일)를 작성할 수 있다. 👉 싱글코드
소스코드를 운영체제(OS)별 컴파일을 사용해 OS에 맞는 목적코드로 만들어준다.
🤮 해당 플랫폼에 맞는 목적코드가 필요해!
🤮 아직까지는 프로그래밍할 때 컴퓨터의 논리에 맞춰서 생각해야해 😢
인간의 논리로 프로그래밍 할 수 있게 되다.
저수준 언어 vs 고수준 언어
➡️ 프로그래밍이 친숙해졌다!
운영체제와 독립적으로 자바 목적코드(바이트코드)를 작성할 수 있다.
운영체제별로 존재하는 JVM을 사용해서 실행된다.
➡️ 자바 목적 코드는 운영체제나 아키텍처와 독립적으로 JVM만 설치되어 있다면 실행될 수 있다.
😊 성능 측면에서 특정 언어로 직접 컴파일된 프로그램보다 상대적으로 느릴 수 있다는 것이 있지만 이는 최근의 JVM 개선과 하드웨어의 성능 향상으로 크게 완화되었다.
JDK (자바 개발 키트)
JRE (Java Runtime Environment)
JVM (자바 가상 머신)
JRE는 자바 프로그램을 실행하는 데만 필요하며, 개발자는 JDK를 사용하여 애플리케이션을 개발하고 빌드한다.
이제 공부할꺼니까...ㅎ 아래 개념들을 길게 설명할수는 없다.ㅎ 차례차례 잘 공부해보도록 하겠다.
OOP : 객체지향프로그래밍 `→ 자바나 C++, C#`
추상화, 상속, 다형성, 캡슐화로 완성된다. 프로그램을 객체와 객체의 작용으로 만드는 것!
CBD : 컴포넌트 기반 개발방법론
애플리케이션을 의미있는 단위로 구분하고 그 단위를 하나의 부품으로 개발헤, 이 부품들을 결합해 소프트웨어 제품을 완성하자는 방법론
SOA : 서비스 지향 구조
개발자의 입장이 아닌 실제 현실의 업무를 기준으로 개발하는 사상
OOP는 자바, C++, C#을 통해서 구현할 수 있다. 그런데 CBD와 SOA는 제품이 따로 없다. 흠… 그렇다면 스프링은 어떤 것의 제품일까? SOA? CBD? 🤮 스프링은 어려워~!
스프링이 어렵다면, 1. 스프링의 배경이론을 알지 못하기 때문이고, 2 스프링 프레임워크가 너무 방대하기 때문이라고 한다.
책의 필자는 스프링의 개념을 OOP 프레임 워크, 더 구체적으로 말하면 IoC/DI , AOP, PSA 이라고 한다.
아까 스프링이 "어떤 것"을 구현할 수 있게하는 프레임워크라고 말했다.
이 어떤 것이 객체지향과 디자인 패턴이라고 느꼈다.
스프링을 소개하는 여러 개발자는 스프링 프레임워크가 프로그래밍 발전의 정점에 있다고 한다.
🤔 사실 저번학기에 스프링을 공부하면서 들어본 개념이기는 하다. 그러나 잘 모르겠다~ 이책을 통해서 공부를 하고 싶은 마음이다!
엔터프라이즈 애플리케이션을 구현하는데 필요한 거의 모든 서비스를 제공한다.
ORM, PXM, JMS, AOP, CoC 등등…
ORM은 객체와 관계형 데이터베이스 간의 매핑을 자동화하는 기술이다.
스프링 프레임 워크는 OOP 프레임워크라는 개념을 제품화 한것이고. 도구로 자바를 선택했으니..?
를 공부할 것이다! ☺️