본문 바로가기
[JAVA]

[처음부터 다시 하는 JAVA] 자바란?

by 북방바다코끼리표범 2024. 1. 3.

5개월간의 국비 교육을 수료하고 취업 준비를 하면서 생각보다 자바에 대해 깊이 배우지 못했고, 시간에 쫒겨 수박 겉핥기 식으로 언어를 배웠다.

기초에 대해 잡고 가지 않으면 나중에 문제가 생길 것 같아서 자바를 처음부터 다시 공부하기로 했다.

다시 처음부터 자바를 공부해보자!

 

객체를 만들 때는 나는 어렵게 만들더라도 사용하는 사람은 쉽게 사용하도록 만들어야 한다

 

자바란?

자바 프로그램은 컴파일과 실행 단계를 거침

  • 자바 소스 코드를 개발자가 작성
  • 자바 컴파일러를 사용해서 소스 코드를 컴파일 함
    • 자바가 제공하는 javac 라는 프로그램 사용
    • .java → .class 파일이 생성됨
    • 자바 소스코드를 바이트 코드로 변환하며 자바 가상 머신에서 더 빠르게 실행될 수 있게 최적화하고 문법 오류도 검출함
  • 자바 프로그램을 실행
    • 자바가 제공하는 java 프로그램 사용
    • 자바 가상 머신(JVM) 실행되며 프로그램 작동

자바는 특정 OS에 맞춰서 개발하지 않아도 됨 os문제는 자바가 해결함

 

개발할 때 자바와 실행할 때 다른 자바 사용 가능

 

서버는 주로 리눅스 서버 사용(aws 사용시 amazon corretto 자바를 aws 리눅스 서버에 설치하면 됨)

 

자바의 운영체제 독립성 덕분에 각각의 환경에 맞춰 자바 설치 가능

 

Hello.java 분석

  • public class로 정의된 hello 클래스 public class의 클래스 이름과 파일이름은 같아야 함.(대소문자 구분 중요)
**public static void main(String[] args){ … };**
  • 클래스안에는 필드(field)와 메서드(method)를 가질 수 있다.
  • 프로그램을 실행하려면 반드시 가져야 하는 main 메서드
  • java로 만든 프로그램이 실행되려면 위의 코드(code)를 가지고 있어야 함 (프로그램 시작점이라고도 함)
**System.out.println("hello");**
  • 해석 : 클래스인 System이 가지고 있는 필드 = out
  • out이 가지고 있는 println
  • System.out 은 System이 가지고 있는 out 이라는 의미.
  • out.println은 out이 가지고 있는 println이라는 의미
  • println 뒤에 괄호가 붙어 있는데 이것을 println 메소드 라고 함
  • out 은 괄호가 붙지 않았는데 이것을 out 필드라고 함
  • out이 가지고 있는 println메서드의 역할은 괄호 안의 내용을 화면에 출력한다. (큰따옴표 안의 내용이 출력됨, 큰따옴표 까지 포함해서 문자열(String) 이라고 함)
  • 자바에서 첫글자가 대문자로 시작 == 클래스
  • 이름이 써있고 뒤에 괄호가 붙어있으면 = 메서드
  • 소문자로 시작하는데 괄호가 붙어있지 않으면 == 필드

시스템이 무엇을 가지고 있는지 알려면 api 라는 문서의 내용을 살펴야 함

 

컴파일하기

  • 컴파일을 하려면 반드시 javac 라는 프로그램이 필요.
  • javac는 자바 컴파일러(Compiler)를 의미

컴파일 구조 예시

  • 터미널에서 위의 명령을 입력하면 Hello.java라는 파일을 읽어들여서 컴파일을 하게 됨
  • 컴파일을 성공하면 Hello.class 파일이 생성되고 실패시 오류 메세지보임
  • Hello.class 파일을 바이트 파일이라고 말함

JVM 으로 실행하기

  • 자바로 작성된 프로그램이라는 것은 = 컴파일된 클래스(바이트 파일 의미)
  • 작성된 바이트 파일을 실행하려면 JVM이 필요 (JVM 역할을 수행하는 것이 java 명령어)
  • java 프로그램은 Hello 클래스를 한 줄 읽고 해석하고 실행하고를 반복하며 실행 이렇게 한줄 읽고 해석하며 실행하는 방식을 인터프리터 (interpreter)방식 이라고 함

인텔리제이 ide

  • IDE ? 통합 개발 환경
  • 코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어
  • 대표적인 IDE = 이클립스, 인텔리제이

여러사람이 함께 개발할때는 .idea 폴더나 iml 파일은 개발자마다 별도로 저장되게 관리해야 한다.

소스코드를 공유하는 시스템에 소스코드를 올릴때는 intellij 설정파일이 공유되지 않게 조심하자.

덮어쓰여지기 때문에 내 설정이 사라진다.

형상관리 서버에 안올리도록 조심하자.