PHP와 JAVA
PHP: Hypertext Preprocessor
- 위의 이름은 현재 PHP의 약자를 나타낸다.
- 기존 약자는
Personal Home Page Tools
이었고, 이름 그대로 개인 홈페이지를 만들기 위한 툴이였지만, 점차 발전함에 따라 대표적인 서버 사이드 스크립트 언어가 되었다.
- 언어의 사용 순위를 매겨주는 사이트를 보면 점유율이 많이 떨어진 모습을 볼 수 있다.
1년 전에는 8위였는데 현재는 15위로 떨어졌다.
PHP의 특징
[무상태성]
- HTTP 프로토콜과 마찬가지로 상태를 유지하지 않는다.
- PHP에서 싱글톤 패턴을 구현하면, 객체는 한 요청에 의한 작업이 끝날 때까지만 유지된다.
- 이는 메모리 관리가 쉬워지고, 요청 간 종속성이 없어 전체 시스템에 영향을 주는 경우가 적어지는 효과를 가져온다.
- 그러나 상태를 저장하려면 쿠키, 세션과 같은 기술이 필요하고,
DB 커넥션 풀
을 만들 수 없다.
[간단한 홈페이지용 툴부터 발전된 언어]
- PHP는 빠르게 홈페이지를 만들기 위한 도구였다.
- 이 말은 대충 빠르게 만들고 끝내는 경우가 많았다는 것이고, 디자인 패턴 같은 체계가 없었기 때문에 많은 레거시 PHP에서 유지보수 뿐만 아니라 보안까지 허점이 가득한 프로젝트들이 많다.
그래서 옛날 사람들은 PHP에 대해 회의감도 많았지만, 당시에는 마땅한 언어가 없었던 것으로 보인다.
- 현재는 오픈 소스로서 많은 피드백을 받아들여 개선되었고,
객체지향과 MVC 패턴
으로 설계된 프레임워크들이 많이 개발되었다.
[인터프리터 언어]
- 실행 시 즉시 해석하여 실행하므로, 개발이 빠르고 테스트가 용이하다.
- 컴파일 언어에서 필수적인 빌드 과정이 생략되므로 대부분 1초 내에 결과를 확인할 수 있다.
[호환성]
- PHP 내장 인터프리터가 각 운영체제에 맞게 배포되어, 다양한 운영체제에서 PHP 코드를 실행할 수 있도록 설계되었다.
- 오픈소스로 공개되어 다양한 운영체제, 여러 웹 서버와의 호환성을 위해 많은 사람들이 포팅 작업에 참여했다.
JAVA
- 자바는 고유한 명사로, 커피로 유명한 인도네시아의 자바 섬에서 유래했다고 한다.
자바를 개발하던 사람들이 카페인에 많이 의존했기 때문이라고..
자바 특징
[플랫폼 독립성]
- 바이트코드로 컴파일되므로, 플랫폼에 종속적이지 않다.
- 이런 강력한 장점으로 인해 여러 언어에서 JVM을 모방하기도 한다.
[Garbage Collection]
- 가비지 컬렉션을 통해 메모리 관리를 자동으로 수행한다.
- C 언어에서 많이 발생하던 메모리 누수 문제를 방지할 수 있다.
[객체지향 프로그래밍 언어]
- 모든 데이터와 기능이 클래스를 통해 정의되고, 객체를 통해 사용된다.
- 상속, 캡슐화, 다형성, 추상화와 같은 객체지향 개념을 지원한다.
- 덕분에 재사용성, 유지보수성, 확장성을 높일 수 있다.
[강타입 언어]
- 변수의 타입을 명확하게 지정해야 된다.
- 처음 접해보면 일일이 타입을 맞춰줘야 한다는 것에 귀찮음을 느낄 수 있다.
- 그러나 타입이 자유로우면, 일일이 타입을 변환해주어야 하고, 타입 오류가 빈번하게 발생할 수 있기 때문에 많은 사람들은 강타입 언어를 선호한다.
[컴파일 언어]
- 자바 컴파일러에 의해 바이트 코드로 변환되고, JVM에 의해 실행된다.
- 보통 바이트 코드로 변환되는 시간이 가장 오래 걸린다.
1초만에 빌드되는
GraalVM
기술도 있지만, 현재는 안정성이 매우 떨어진다. - 그러나 실행 시점에 추가 해석 시간이 없으므로 성능이 더 좋다.
PHP에서 JAVA로 마이그레이션 하는 이유
- 사실 위에서 언급한 특징들로 보면 자바에 대해서 더 좋게 써놨지만, 트래픽이 굉장히 많은 대규모 애플리케이션이 아닌 이상 크게 차이가 없다.
- 그럼에도 마이그레이션 하는 이유는 우리나라가 자바 공화국이기 때문일 것이다.
This post is licensed under CC BY 4.0 by the author.