🍀자바의 장점 플랫폼에 종속되지 않는다 ⇒ 자바 프로그램과 운영체제 중간에 JVM 이라는 가상 머신을 두기 때문에 플랫폼에 종속되지 않는다. Java Compiler 는 .java파일을 .class 파일(자바 바이트코드)로 변환시켜줌 ⇒ Byte code는 기계어가 아니어서 JVM이 중간에서 OS가 Byte code를 이해할 수 있도록 해석해주는 역할을 담당. 하이브리드 언어다 ⇒ 인터프리터의 장점과 컴파일러의 장점을 합친 하이브리드 언어. 개발자가 작성한 코드를 먼저 컴파일 방식으로 번역한 뒤(Java Compiler) 컴퓨터가 이해할 수 있게 인터프리터 방식으로 실행(JVM)
JIT(Just In Time) : 자바 컴파일러가 자바 소스 코드를 바이트 코드로 변환하며 최적화 바이트 코드가 실행되는 과정에서 실시간으로 JIT 컴파일러가 바이트 코드를 기계어변환 ⇒ 필요한 부분만 변환되고 변환된 기계어 코드는 캐싱되어 다시 컴파일할 필요 없음
객체지향 언어다 ⇒ 현실 세계의 개념을 프로그래밍에 도입한 것으로 현실에 존재하는 사물이나 사건을 객체로 만든 후 객체끼리 상호 작용하며 프로그램을 구성하는 방식
2. 코틀린
자바처럼 바이트코드로 컴파일돼 JVM에서 실행
문법이 간결해 가독성과 생산성이 좋으며 자바 코드와 호환된다.
3. PHP
🍀우리나라에서 PHP를 사용하지 않는 이유 1. 성능 이슈 : PHP는 복잡한 웹 사이트 제작 목적으로 만들어진 프로그래밍 언어가 아니여서 성능에 대해 고려하지 않은 채 설계되었음. 2. 보안 문제 3. PHP를 낮춰 보는 인식 4. 적은 사용처
4. 모바일 앱 개발 언어 : 자바, 코틀린, 스위프트
1. 안드로이드 앱 개발: 자바, 코틀린
안드로이드 : 구글에서 자바로 개발한 모바일 운영체제
⇒ 아이폰에 대항하고자 OHA를 설립했고 모바일 시장에 빠르게 침투하고자 오픈 소스를 원칙으로 삼았음 당시 자바가 높은 시장 점유율을 차지하고 있었기 때문에 자바를 선택.
🍀안드로이드 앱의 컴파일 방식 구글에서 자체적으로 ART라는 가상 머신을 만들고 AOT라는 컴파일러를 사용 자바 코드 + 자바 컴파일러 = 바이트 코드 바이트 코드 + AOT 컴파일러 = 기계어 ART 기계어 실행
2. iOS 앱 개발 : 스위프트
오브젝트-C 와 Swift로 개발 가능.
5. 크로스 플랫폼 개발 언어: 다트, 자바스크립트
1. 다트
플러터 : 구글에서 크로스 플랫폼 개발을 위해 2017년에 발표한 프레임워크 ⇒ 다트로 만들어진 프레임워크
프레임워크 : 프로그래밍 언어로 처음부터 끝까지 코드를 작성하지 않고 쉽게 개발할 수 있도록 이미 짜인 일종의 틀을 제공하는 개발 도구
🍀플러터 앱의 컴파일 방식 개발 단계에서는 JIT 컴파일러, 배포 단계에서는 AOT 컴파일러를 이용.
🍀플러터의 장점 핫 리로드 기능 제공 ⇒ JIT 컴파일러를 이용해 코드가 저장되는 즉시 변경 사항을 화면에 표시하는 기능플랫폼에 상관없이 같은 UI 구현
🍀플러터의 단점 기능 구현의 한계네이티브 환경 변화에의 즉각적인 대응 어려움
2. 자바스크립트
🍀리액트 네이티브 앱의 동작 방식 리액트 네이트브 ⇒ 자바스크립트 코드 + 네이티브 코드 자바스크립트 : 앱의 UI와 로직 네이티브 코드 : 네이티브 기능을 직접 구현 또는 성능 최적화
🍀리액트 네이티브의 장점 웹뷰를 대체할 브릿지 방식 고안 ⇒ 기존 웹뷰를 사용하는 방식이 아니라 자바스크립트 코드와 네이티브 코드 간의 네이티브 API 통신을 통해 앱 화면에 네이티브 화면을 보여줌. 코드 푸시 기능 ⇒ 앱 스토어의 업데이트를 통하지 않고 변경된 파일을 실행 중인 앱에서 직접 내려받을 수 있음.
🍀리액트 네이티브의 단점 코드 푸시의 한계 : 네이티브 코드는 업데이트할 수 없음. ⇒ 코드 푸시는 버그 수정 등 간단하지만 긴급한 용도로 사용 네이티브 언어를 알아야 하는 점 : 자바스크립트와 네이티브 언어를 함계 사용.