developer-ellen
인간 디버거의 로그 찍기
developer-ellen
전체 방문자
오늘
어제
  • 분류 전체보기 (217)
    • 회고록 (0)
    • 취뽀 및 커리어 여정의 Stack (2)
      • SSAFY 7기 (2)
    • 프로그래밍공부 (24)
      • c++ (0)
      • JAVA (3)
      • Spring (5)
      • design pattern (3)
      • BackDB (1)
      • Servlet&JSP (3)
      • Vue (4)
      • JPA (4)
      • Infra (1)
      • Linux (0)
    • AI (3)
      • papers (3)
      • trend (0)
    • 프로젝트진행 (0)
      • 데이터베이스 (0)
      • 서버개발 (0)
      • 인공지능 (0)
      • 하루정리 (0)
    • 포트폴리오 (0)
    • 알고리즘 (158)
      • 알고리즘문풀 (155)
      • 알고리즘공부 (3)
    • 통계공부 (15)
      • 시계열분석 (15)
      • 회귀분석 (0)
    • CS (14)
      • 컴퓨터네트워크 (4)
      • 운영체제 (8)
      • 데이터베이스 (2)
    • 주저리주저리 (0)
      • 필사 (0)
    • 취업관련정보 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 시계열
  • 카카오코테
  • 데이터분석
  • 삼성코테기출자바풀이
  • SW역량테스트파이썬
  • BOJ파이썬풀이
  • 운영체제인터럽트
  • ARIMA모형
  • AR모형
  • c++ 빌더 패턴
  • MA모형
  • 삼성코테구현풀이
  • 삼성코테준비
  • 삼성코테파이썬
  • 삼성코테기출
  • 삼성코테파이썬풀이
  • 삼성코테자바꿀팁
  • Arima
  • 카카오코테java풀이
  • 삼성코테구현문제추천
  • 백준파이썬풀이
  • 시계열분석
  • c++디자인패턴
  • SW역량테스트파이썬풀이
  • 통계분석
  • 통계학
  • 삼성코테자바풀이
  • 삼성코테파이썬준비
  • 코테파이썬
  • 삼성코테자바준비

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
developer-ellen

인간 디버거의 로그 찍기

JAVA 언어에 대하여
프로그래밍공부/JAVA

JAVA 언어에 대하여

2021. 9. 3. 14:36

JAVA

1. 자바란?

  • 자바는 썬 마이크로시스템즈에서 개발한 객체지향 프로그래밍 언어이다.
  • 대표적인 객체지향 언어인 c++의 장점을 채택하며, 사용되지 않는 부분들을 제거해 비교적 배우기 쉽고 간결한 표현이 특징이다.
  • 자바는 풍부한 클래스 라이브러리를 통해 프로그래밍에 필요한 요소들을 기본적으로 제공한다.

2. 자바의 특징

1) 운영체제의 독립적

  • 자바는 일종의 애뮬레이터인 자바가상머신(JVM)을 이용하며, 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 응용프로그램으로 부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다
  • 자바로 작성된 프로그램은 운영체젱 독립적이지만 JVM은 운영체제에 종송적이어서 여러 운영체제에 맞춰 JVM을 이용하면 된다.

2) 객체지향언어

  • 자바는 대표적인 객체지향 프로그래밍언어이며, 상속성, 캡슈화, 다형성이 잘 적용되었다.

3) 자동 메모리 관리(Garbage Collection)

  • 자바는 가비지컬렉터(garbage collector)가 자동적으로 메모리를 관리해주기 때문에 프로그래머는 따로 메모리를 관리하지 않아도 된다.
  • 가비지컬렉터가 없다면 프로그래머는 사용하지 않는 메모리를 체크하고 반환하는 일을 수동적으로 진행하는 번거로움이 있을 것이다.

4) 네트워크와 분산처리를 지원

  • 인터넷과 대규모 분산환경을 위해 다양한 네트워크 프로그래밍 라이브러리를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발할 수 있다.

5) 멀티쓰레드 지원

  • 멀티쓰레드는 일반적으로 운영체제에 따라 구현방법도 상이하며, 처리 방식도 다르다.
  • 자바에서 개발되는 멀티쓰레드 프로그램은 시스템과는 관계없이 구현가능하며 관련된 라이브러리르 사용하면 구현이 쉽다.

6) 동적 로딩을 지원

  • 자바로 작성된 애플리이션은 여러 개의 클래스로 구성된다.
  • 자바는 동적 로딩을 지원하여서 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여서 사용할 수 있다는 장점이 있다.

3. 자바의 실행과정

자바컴파일러(javac.exe)를 사용해서 소스파일로부터 클래스 파일을 생성한다. 그 다음 자바 인터프리터로 실행한다.

 

 

JVM

1. JVM 이란?

  • JVM은 'Java virtual machine'으로 '자바를 실행하기 위한 가상 기계'라 할 수 있다.
  • 자바로 작성된 애플리케이션은 모두 JVM에서만 실행되기 때문에 자바 애플리케이션이 실행되기 위해선 반드시 JVM이 필요하다.
  • 일반 애플리케이션의 코드는 OS만 거치고 하드웨어로 전달되는데 자바애플릴케이션은 JVM을 한번 더 거치기 때문에 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행 시에 해석(interpret)되기 때문에 속도가 느리다는 단점을 갖고 있다.
  • 요즘엔 바이트코드(컴파일된 자바코드)를 하드웨어의 기계어로 바로 변환해주는 JIT컴파일러와 향상된 최적화 기술이 적용되어서 속도의 격차를 많이 줄였다.

 

자주 발생하는 에러와 해결방법

1. cannot find sybol 또는 cannot resolve symbol

  • 지정된 변수나 메서드를 찾을 수 없다는 뜻으로 선언되지 않는 변수나 메서드를 사용하거나 변수 또는 메서드의 이름을 잘못 사용한 경우에 발생되는 에러
  • 자바에는 대소문자 구분을 하기 때문에 철자 뿐만 아니라 대소문자의 일치여부도 꼼꼼하게 확인해야함

2. ';' exptected

  • ';' 세미콜론이 필요한 곳에 없다는 에러
  • 자바의 모든 문장 끝엔 ';'을 붙여줘야 함.

3.  Exception in thread "main" java.lang.NoSuchMethodError: main

  • 'main 메서드를 찾을 수 없다'는 에러
  • 실제로 클래스 내에 main 메서드가 존재하지 않거나 메서드의 선언부 'public static void(String[] args)'에 오타를 확인

4.  Exception in thread "main" java.lang.NoClassDefFoundError: Hello

  • 'Hello'라는 클래스를 찾을 수 없다는 에러
  • 클래스의 대소문자를 확인해보고, 클래스파일(*.class)가 생성되었는지 확인
  • 클래스파일이 존재하는데도 동일한 에러가 발생하면 클래스 패스의 설정이 올바른지 확인

5.  illegal start of expression

  • 문장의 문법적 오류가 있다는  에러
  • 간단히 괄호 '(', '{' 를 열고서 닫지 않거나, if나 for문 등에 문법적 오류가 났을 때, public 이나 static 같은 키워드를 잘못 사용할 경우에도 발생

6. class, interfacem or enum expected

  • '키워드 class나 interface 또는 enum이 없다'의 에러지만 보통 괄호 '{' 또는 '}'의 개수가 일치 하지 않는 경우에 발생

 

 

출처

'Java의 정석' - 남궁성

이 책을 공부하면서 기록하기 위하여 작성하였습니다.

'프로그래밍공부 > JAVA' 카테고리의 다른 글

JVM의 구조와 자바의 실행  (0) 2022.07.17
JAVA - 변수  (0) 2021.10.01
    '프로그래밍공부/JAVA' 카테고리의 다른 글
    • JVM의 구조와 자바의 실행
    • JAVA - 변수
    developer-ellen
    developer-ellen

    티스토리툴바