들어가기에 앞서
코딩테스트를 위해서
- 프로그래밍 언어 사용 숙련도
- 자료구조, 알고리즘 개념과 구현 방법 숙지
- 다양한 문제에 실제로 적용해보기
코딩테스트 유형
- 정렬 : 정렬 문제가 단독으로 잘 나오진 않고, 문제 풀이를 위해 데이터 정렬이 필요할 때가 있다.
- 탐색 : 1, 2, 3차원 데이터에서 특정 값을 찾는 유형
- 부분 문제의 합 : 작은 문제의 반복적 해결 구조를 갖는 유형
- 최적 선택 : 최적의 해가 아니라 근사치를 얻어 정확한 답을 얻어내지 못할 수 있으니 주의
- 기타 시뮬레이션 : 조건과 요구사항을 잘 읽고 문제를 해결, 특정 알고리즘으로 매핑되지 않을 수 있다.
학습 환경 구성하기
- IDE 학습용으로
Intellij
무료 버전 설치
- 사용할 JDK (Java Development Kit) 설정해주기
JAVA
Java 의 역사
썬 마이크로 시스템즈 라는 회사에서 1990년 초 양방향 TV 를 만드는 제어박스의 개발 프로젝트인 Green Project 를 진행하기 위해 객체지향 언어로 C++ 언어를 사용했다.
C++ 언어의 부족으로 오크(Oak) 라는 언어를 직접 개발한 것이 Java 가 탄생한 계기이다.
James Gosling 이라는 개발자가 개발했으며, 1993년 인터넷과 웹이 엄청난 속도로 발전하던 시기에 마침 Java 는 인터넷 개발에 적합한 언어였다.
Java 는 꾸준히 발전해 현재는 여러 분야에 다양하게 사용되고 있다.
2009년 썬 마이크로 시스템즈 는 오라클에 합병되었다.
Java 소개
Java 의 특징
- 단순하다
포인터가 없어서 메모리 관리가 용이하다.
- 객체지향
클래스와 객체를 중심으로 프로그램을 개발한다. 구역을 나눠 구역별로 재사용해 생산성을 높이고, 구역별로 제한을 할 수 있어 보안성을 높일 수 있다 정도로 알고 넘어가자.
- 플랫폼 독립적
JVM (Java Virtual Machine) 이라는 소프트웨어를 통해 운영체제에 따라 코드를 재작성할 필요가 없다. 한 번 작성된 코드는 어떤 운영체제에서든 동작가능하다.
Java 참고사항
- Java 8 부터는 LTS (Long Term Service)
- Java 8 까지는 32bit
- Java 9 부터는 64bit
Java 프로그램 실행 과정
Java Source Code (Program.java)
-> Java Compiler
-> Byte Code (Program.class)
-> JVM (Window or Linux)
-> 실행
Java 의 활용
- 웹 어플리케이션
- 모바일 어플리케이션
- 엔터프라이즈 어플리케이션
- 웹/앱 서버
- 임베디드 시스템
Java 플랫폼
- Java SE (Standard Edition) : 기본 개발 환경
- Java EE (Enterprise Edition) : 서버 기반 프로그램 개발 환경
- Java ME (Micro Edition) : 모바일 및 임베디드 시스템 개발 환경
Java 파일 확장자
컴퓨터는 기본적으로 텍스트 파일과 바이너리 파일로 나뉜다.
*.Java
: 자바 소스파일로 텍스트 파일이다.
*.class
: 자바 실행파일로 바이트 코드로 이뤄진 파일이다.
아래와 같은 파일 확장자도 있다.
*.jar
자바 아카이브로 자바 클래스 파일과 클래스에서 이용하는 리소스 파일 및 메타 데이터를 포함해
배포 및 실행 목적으로 하나의 파일로 패키징해놓은 포맷
*.war
웹 아카이브로 웹과 관련된 서블릿 클래스파일, JSP 파일 및 리소스파일을 포함하는 패키징 파일
*.ear
엔터프라이즈 아카이브로 jar 파일과 war 파일을 패키징해 Application Server 에 배포하기 위한 파일