[프로그래머스] 자바 초급 - java 자체

정현우·2021년 3월 28일
2

Java Basic

목록 보기
1/8

JAVA 그 자체에 대해

계속 업데이트 될 문서입니다 :)

복잡할땐 가장 기초로 돌아가자, JAVA 언어 개론 - 가장 기본 중 기본
< Spring하기 싫다 싫다 했지만 결국 하게 된다,, 앞서 자바 자체에 대해 다시 제대로 알고가자! >

JAVA?

자바는 무엇인가? 위키

  • 자바(영어: Java, 문화어: 쟈바)는 썬 마이크로시스템즈의 제임스 고슬링(James Gosling)과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이다. 1991년 그린 프로젝트(Green Project)라는 이름으로 시작해 1995년에 발표했다. 처음에는 가전제품 내에 탑재해 동작하는 프로그램을 위해 개발했지만 현재 웹 애플리케이션 개발에 가장 많이 사용하는 언어 가운데 하나이고, 모바일 기기용 소프트웨어 개발에도 널리 사용하고 있다. 현재 버전 15까지 출시했다.

  • 자바의 개발자들은 유닉스 기반의 배경을 가지고 있었기 때문에 문법적인 특성은 파스칼이 아닌 C++의 조상인 C 언어와 비슷하다. 자바를 다른 컴파일언어와 구분 짓는 가장 큰 특징은 컴파일된 코드가 플랫폼 독립적이라는 점이다. 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트코드라는 특수한 바이너리 형태로 변환한다. 바이트코드를 실행하기 위해서는 JVM(자바 가상 머신, Java Virtual Machine)이라는 특수한 가상 머신이 필요한데, 이 가상 머신은 자바 바이트코드를 어느 플랫폼에서나 동일한 형태로 실행시킨다. 때문에 자바로 개발된 프로그램은 CPU나 운영 체제의 종류에 관계없이 JVM을 설치할 수 있는 시스템에서는 어디서나 실행할 수 있으며, 이 점이 웹 애플리케이션의 특성과 맞아떨어져 폭발적인 인기를 끌게 되었다.

자바의 장점?

  1. 이식성이 높은 언어

    • 이식성: 서로 다른 실행환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것
    • Java언어로 개발된 프로그램은 소스 파일을 다시 수정하지 않아도, 자바 실행환경(JRE: Java Runtime Environment)이 설치되어 있는 모든 운영체제에서 실행 가능합니다. 따라서 자바언어는 이식성이 높은 프로그래밍 언어라 할 수 있습니다.
  2. 객체 지향 언어

    • 객체지향 프로그래밍(OOP) : 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법
    • 자바는 100% 객체지향 언어입니다. 객체를 만들기 위해 설계도인 클래스를 작성해야 하고, 객체와 객체를 연결해 목적에 맞는 프로그램을 만들어 냅니다. 자바는 아무리 작은 프로그램이라도 객체를 만들어 사용하게 됩니다.
    • 처음부터 객체를 고려해 설계되었기 때문에 객체지향 언어가 가져야 할 캡슐화, 상속, 다형성 기능을 완벽하게 지원합니다.
  3. 함수적 스타일 코딩을 지원

    • 처음부터 지원한건 X -> 함수적 프로그래밍을 위해 람다식을 자바8 부터 지원합니다. 람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집게처리하는데 쉬워지고, 코드가 매우 간결해집니다.
    • 한 번 살펴보자!
  4. 메모리를 자동으로 관리

    • C++은 메모리에 생성된 객체를 제거하기 위해 개발자가 직접 코드를 작성해야합니다. 만약 이 작업을 잘 처리하지 않으면 프로그램은 불완전해지고 갑자기 다운되는 현상을 겪게 됩니다.
    • 자바는 개발자가 직접 메모리에 접근할 수 없도록 설계되었으며 메모리는 자바가 직접 관리하게 됩니다. 객체 생성 시 자동적으로 메모리영역을 찾아서 할당하고, 사용이 완료되면 쓰레기 수집기(Garbage Collector) 를 실행시켜 자동적으로 사용하지 않는 객체를 제거시켜줍니다. 따라서 개발자는 메모리 관리의 수고를 덜고, 핵심기능 코드 작성에 집중할 수 있습니다.
  5. 다양한 애플리케이션 개발

    • 자바는 윈도우, 리눅스, 유닉스 등 다양한 운영체제에서 실행되는 프로그램을 개발 할 수 있습니다. 단순한 콘솔 프로그램부터 클라이언트용 윈도우 애플리케이션, 서버용 웹 애플리케이션 그리고 모바일용 안드로이드 앱에 이르기까지 거의 모든 곳에서 실행되는 프로그램을 개발 할 수 있습니다.
  6. 멀티쓰레드를 쉽게 구현 가능

    • 하나의 프로그램이 동시에 여러 작업을 처리해야 하는 경우와, 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬처리하려면 멀티쓰레드 프로그래밍이 필요합니다.
    • 자바는 쓰레드 생성 및 제어와 관련된 라이브러리 API를 제공하고있기 때문에 실행되는 운영체제에 관계없이 멀티 쓰레드를 쉽게 구현 가능합니다.
    • 사실 python으로 멀쓰/멀프 해보면 쉽다 라는 말은 말문이 막힘 ㅎ
  7. 동적로딩(Dynamic Loading)을 지원

    • 자바 애플리케이션은 여러개의 객체가 서로 연결되어 실행되는데, 이 객체들은 클래스로부터 생성됩니다.
    • 애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적로딩해서 객체를 생성합니다. 또한 개발완료후 유지보수가 발생하더라도 해당 클래스만 수정하면 되므로 전체 애플리케이션을 다시 컴파일 할 필요가 없습니다. 즉, 유지보수를 쉽고 빠르게 진행할 수 있습니다.
  8. 오픈 소스 라이브러리가 풍부

    • 자바는 오픈소스언어이므로 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스가 많습니다. 고급 기능을 구현하는 코드를 직접 작성할 경우 시간과 노력이 필요하고, 실행 안전성을 보장할 수 없지만 검증된 오픈소스 라이브러리를 이용하면 개발기간을 단축하며 안전성이 높은 애플리케이션을 쉽게 개발할 수 있습니다.

JAVA 데이터 타입

기본 타입 (원시 타입, Primitive Type)

  • 정수 타입 : byte, char, short, int, long
  • 실수 타입 : float, double
  • 논리 타입 : boolean

참조 타입 (Reference Type)

  • 배열 타입
  • 열거 타입
  • 클래스
  • 인터페이스

what?

  • 기본 타입으로 선언된 변수와 참조 타입으로 선언된 변수의 차이점은 저장되는 값이 무엇인가 이다!
  • 기본 타입을 이용해서 선언된 변수는 실제 값을 변수 안에 저장하지만, 참조 타입을 이용해서 선언된 변수는 메모리의 번지(주소)를 값으로 가진다!
  • 변수는 Stack, 객체는 Heap
  • 참조 타입 vs 원시 타입

JAVA 접근 제어

데이터 접근


JAVA 상속

상속와 OOP

  • OOP
  • 상속
  • 생성자의 super
  • 오버로딩 / 오버라이딩
  • 다중 상속
  • oop 컨셉의 목표 (장점, 왜 하는데?)

인터페이스와 추상클래스

  • interface -> 익명 함수 -> 람다식
  • abstract
profile
도메인 중심의 개발, 깊이의 가치를 이해하고 “문제 해결” 에 몰두하는 개발자가 되고싶습니다. 그러기 위해 항상 새로운 것에 도전하고 노력하는 개발자가 되고 싶습니다!

0개의 댓글