티스토리 뷰

반응형
  


개발일지 2일차(2018-07-10)

전체 목록 보기 : 링크 


기초부터 다시 시작한다는 마인드로..

처음부터 시작! 




자바의 특징

 

이식성이 높은 언어이다

 이식성이란 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 말한다. 자바 언어로 개발된 프로그램은 소스 파일을 수정하지 않아도, 자바 실행 환경(JRE)이 설치되어 있는 모든 운영 체제에서 실행 가능하다.

 

객체 지향 언어이다

 객체 지향 프로그래밍(Object Oriented Programming, OOP)이란 프로그램을 개발하는 기법으로, 부품에 해당하는 객체들을 먼저 만들고 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법을 말한다. 자바는 100% 객체 지향 언어이며, 객체를 만들기 위해 설계도인 클래스를 작성하고 객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어 낸다. 또한 객체 지향 언어가 가져야 할 캡슐화, 상속, 다형성 기능을 완벽하게 지원한다.

 

함수적 스타일 코딩을 지원한다

 함수적 프로그래밍은 대용량의 데이터 병렬 처리와 이벤트 지향 프로그래밍을 위해 적합하기 때문에 최근 들어 다시 주목받고 있다. 자바는 이 함수적 프로그래밍을 위해 람다식을 자바 8부터 지원한다. 람다식을 사용하면 컬렉션 요소를 필터링, 매핑, 집계 처리하는게 쉬워지고, 코드가 매우 간결해진다는 장점이 있다.

 

메모리를 자동으로 관리한다

 C++이 메모리 관리를 위해 개발자가 직접 코드를 작성해야 하는 반면, 자바는 개발자가 메모리에 직접 접근할 수 없으며 자바가 직접 메모리를 관리한다. 객체를 생성할 때 자동적으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 Garbage Collector를 실행시켜 자동적으로 사용하지 않는 객체를 제거한다. 따라서 개발자는 메모리 관리의 수고스러움을 덜고, 코딩에 좀 더 집중할 수 있다.

 

다양한 애플리케이션을 개발할 수 있다

 자바는 윈도우, 리눅스, 유닉스, 맥 등 다양한 운영체제(OS)에서 실행되는 프로그램을 개발할 수 있다. 또한 콘솔 프로그램, 클라이언트용 윈도우 애플리케이션, 서버용 웹 애플리케이션, 모바일용 안드로이드 앱에 이르기까지 거의 모든 곳에 실행되는 프로그램을 개발할 수 있다.

 

멀티스레드를 쉽게 구현할 수 있다

 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하고 있기 때문에 실행되는 운영체제에 상관없이 멀티 스레드를 쉽게 구현할 수 있다.

 

동적 로딩(Dynamic Loading)을 지원한다

 애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 각 객체가 필요한 시점에 클래스를 동적 로딩해서 생성한다. 또한 유지보수 시 해당 클래스만 수정하면 되기 때문에 전체 애플리케이션을 다시 컴파일할 필요가 없다. 따라서 유지보수가 쉽고 빠르다.

 

오픈소스 라이브러리가 풍부하다

 자바는 오픈소스 언어이기 때문에 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스가 많다. 오픈소스 라이브러리를 사용하면 개발 시간을 단축하면서 안정성이 높은 애플리케이션을 쉽게 개발할 수 있다.

 

속도가 느리다

 자바는 한 번의 컴파일링으로 실행 가능한 기계어가 만들어지지 않고 JVM에 의해 기계어로 번역되고 실행하는 과정을 거치기 때문에 C나 C++의 컴파일 단계에서 만들어지는 완전한 기계어보다는 속도가 느리다. 그러나 바이트 코드를 기계어로 변환해주는 JIT 컴파일러 같은 기술 적용으로 JVM의 기능이 향상되어 속도의 격차가 많이 줄어들었다.

 

예외처리가 불편하다

 자바는 다른 언어들과 달리 프로그램 실행 시 발생할 수 있는 예외(Exception)들을 개발자가 직접 선언하여 처리해야 한다. 그렇지 않으면 아예 컴파일이 되지 않는다.

출처: 이것이 자바다, 신용권 저


1. 자바의 특징 

    1) 플랫폼 독립적 - JVM 이 통역자 역할 

       "Write Once , Run Anywhere"

    2) 객체 지향(Object-Oriented) 언어이다     

    3) 가비지 컬렉션 ( jvm이 메모리 관리 ) 

    4) Multi Threading   활용도 좋음 


 - 객체지향 프로그래밍 ( OOP )

  : 객체 지향 개념이 적용된 프로그래밍 

 - 객체 지향 ( Object - Oriented )  

  : 시스템 분석 설계 기법 

  -> 객체지향이란 시스템의 기본 단위를 객체로 상정하고 객체와 객체의 관계를 중심으로 시스템 분석 설계         를 하는 기법을 말함. 

 

  참고) 소프트줴어 개발 프로세스 

  : 폭포수 모델 (WATERFALL MODEL )

  요구분석 - 설계 - 구현 - 테스트 - 운영 

 

 

  - 객체( Object ) 

  시스템의 기본 단위. 

          속성과 기능으로 구성 

  ex) 축구게임 소프트웨어 

  : 축구선수, 감독 , 관중 , 심판 

    경기장 , 경기전적, 골

    

  - 객체 구성요소 :  속성과 기능

     속성 : 객체의 정보 , attribute or 변수(variable)에 저장 

          ex)축구선수의 이름, 나이, 신체정보  

     기능 : 객체의 동작 , operation or method 라고 함 

  ex)축구선수가 달린다, 축구선수가 패스하다.

 

  - 객체와 클래스 관계 

     클래스는 객체의 설계도이다.

      -> 객체 object는 class 를 통해서 생성할 수 있다.

 

  -UML : 통합 모델링 언어 

  객체지향 분석 설계(OOAD : Object - Oriented Anaysis and Design)를 위한 모델링 언어 

  대표적으로 class diagram, usecase diagram등이 있다. 

 

  uml 툴 중 star uml 을 이용해 class diagram 을 만들어본다. 

  ex) Person class를 diagram 으로 정의 

  속성 : name, age 

  기능 : eat , sleep 

 

  -Encapsulation

  객체 지향의 주요 개념 

  "public interface, private implementation" 

  인터페이스는 공개하고 구현부는 감춘다. 

  객체 (or 모듈) 를 정의할 때 인터페이스와 구현부를 분리해서 개발한다. 

 

  Encapsulation 적용시 장점 

 

  1. 정보 보호 (정보 은닉)

  2. 유지보수성 향상 

      인터페이스로 소통하고 구현부가 감추어져 있으므로 구현부가 업데이트 되어도 외부에는 영향이없다. 

      -> 결합도가 낮아진다. 

  3. 생산성 향상 

      구현부를 분석하지 않아도 인터페이스만 알면 사용할 수 있다. 

 

반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크