[Java] 기본 정보, 특징

Kerry·2025년 8월 28일
0

Java 기본

목록 보기
2/4

기본 사항

  • Cross-Platform
    • 어떤 환경에서도 돌아간다!
    • JDK, JRE 문제는 Oracle에서 해결해주고, 우린 Java 코드만 짜면 된다.
  • 객체 지향 언어
    • 아예 '객체 지향 언어를 만들자!'는 목표 하에 만들어진 언어라, 객체 지향 언어의 대표 격인 언어이다.
  • 父, 제임스 고슬링

Java vs. 타 언어

  • C, C++은 컴파일러를 거쳐 목적 코드로 컴파일된다.
    • 목적 코드: 원시 코드를 ASM 등 기계어에 가까운 언어로 변역한 산물.
    • 장점
      • 속도가 빠르다! 한 번 컴파일 해두면 바로 CPU에서 돌릴 수 있다!
    • 단점
      • CPU Instruction Set에 따라... 운영체제에 따라... 같은 원시 코드의 번역 결과물(목적 코드)이 다를 수 있다.
      • So, C/C++로 작성된 프로그램은 사용자가 직접 빌드해야 하는 경우가 쫌 있다. Linux 서버 오래 다뤄본 사람이면 알 것.
  • 인터프리터 언어(Python 등)는 실행 시점에 한줄 한줄 번역된다.
    • 실행 속도 측면에서 손해를 좀 본다.
    • 디버깅이 편하고, 문법이 쉬운 경향이 있긴 하다만...
  • Java는!? JVM의 은총! (Interpret - Compile 언어 특징 모두 가짐)
    • 원시 코드를 Byte Code까지만 번역한다!
      • 원시 코드와 기계어의 중간!
    • Byte Code는 CPU Dependent하지 않다.
    • 이게 어떻게 가능하냐면...
      • JVM이 설치된 환경에서 Java Byte Code를 실행하면, JVM이 Byte Code를 기계어로 번역해 실행해 주기 때문.
      • 순수 컴파일 언어보다는 쪼끔 느리지만, 순수 인터프리터 언어보다는 빠른 편.
    • 사실 Java만 그런 건 아니고, C#도 CLR에서 돌아가는 중간 코드를 생성하긴 한다.

왜 C# 놔두고 Java인가?

  • C#은 Windows에 종속된 Common Language Runtime에서 돌아간다.
    • Windows에 종속적이다.
    • 물론 Mono Framework를 이용해서 UNIX/LINUX에서도 C#을 실행할 수 있긴 한데... 설정이 좀 번거롭다. 내가 해봤다. 다시는 안 할 것이다.
  • Java는 개발할 거라면 JDK! 프로그램 실행만 할 거라면 JRE 설치하면 뚝딱! 실행가능!

JVM 덕분에...

  • Byte Code를 생성할 수 있다면 JVM을 이용해 작동하는 언어를 만들 수가 있다.
    • Kotlin... Scala...

Java로 뭘 할 수 있는가?

'느슨한 튜링 완전'을 만족하므로 그 어떤 것도 할 수 있다

Desktop App

  • 당연하게도, 컴퓨터에서 돌아가는 프로그램을 만들 수 있다.
    • 메인프레임이든, PC든, 스마트폰이든...
  • GUI 앱 뚝딱하고 싶다면, Java 기초 공부하고 Swing WYSIWYG 에디터 써서 만들면 될 것이다. 쉽다!

(과거) Applet

  • 웹 페이지 내에서 돌아가는 Java 프로그램!
    • 근데... 웹 페이지에서 Java같은 범용 목적 언어가 작동할 수 있다면, 웹 브라우저의 보안 취약점을 뚫고 나와서 사용자 컴퓨터에 뭔가 나쁜 짓을 할 수 있다는 의미가 된다.
    • 마치 XSS처럼.
      • So, 지금은 실행 금지됨!

Servlet / JSP(Java Server Page)

PHP의 추억이......

  • 웹 브라우저(Client Side)에서 서버로 요청을 날리면, 요청의 내용에 맞게 HTML 파일을 생성해서 반환하는 Java 소프트웨어.
  • Servlet은...
    • 기본적으로, 'Java 프로그램'이다.
    • 그러니까, Java 코드가 메인이다. Java에 HTML을 끼얹는 느낌.
  • JSP는...
    • HTML 파일 부분 부분에 Java 코드를 삽입할 수 있는 무언가다.
    • HTML 문서 안에 <?php ?> 집어넣듯이, HTML 문서에 Java를 끼얹는다.
    • 개인적인 소견으로는, JSP, PHP, ASP 같은 Server Page 방식 웹 개발이 러닝 커브가 완만했던 것 같다. 개발 시간도 좀 더 짧았던 것 같고. 혼자 웹 개발하기엔 이만한 게 없다.
      • 문제는, 도저히 분업이 안 된다는 것!!! 규모가 큰 프로젝트를 Server Page 방식으로 하라고 한다면, 눈앞이 캄캄하다!!!
      • 아마 UI/UX가 중요해지면서 Server Page 방식이 좀 물러나게 된 게 아닌가... 하는 게 개인적 의견.
profile
박한강, 25세.

0개의 댓글