스프링 프레임워크


스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 불린다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다.


역사


로드 존슨이 2002년에 출판한 자신의 저서인 Expert One-on-One J2EE Design and Developement 에 선보인 코드를 기반으로 시작하여 점점 발전하게 되었다. [1] 이 프레임워크는 2003년 6월에 최초로 아파치 2.0 라이선스로 공개되었으며 주요 버전 이력은 다음과 같다.


1.0 : 2004년 3월

2.0 : 2006년 10월

2.5 : 2007년 11월

3.0 : 2009년 12월

3.1 : 2011년 12월

4.0 : 2013년 12월

2006년에 1.2.6 버전으로 Jolt Productive Award 와 Jax Innovation Award 를 수상하였다.


특징


스프링은 다른 프레임워크에 비해 다음과 같은 특징을 가진다.

경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
스프링은 POJO(Plain Old Java Object) 방식의 프레임워크이다. 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.
스프링은 제어 반전(IoC : Inversion of Control)을 지원한다. 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.
스프링은 의존성 주입(DI : Dependency Injection)을 지원한다. 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
스프링은 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원한다. 따라서 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
스프링은 영속성과 관련된 다양한 서비스를 지원한다. iBATIS나 Hibernate 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.
스프링은 확장성이 높다. 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.

주요 모듈


스프링에서 사용되는 주요 모듈은 다음과 같다.


제어 반전 컨테이너[편집]

제어 반전(IoC: Inversion of Control) 컨테이너는 스프링의 가장 중요하고 핵심적인 기능으로서 자바의 반영(reflection)을 이용해서 객체의 생명주기를 관리하고 의존성 주입(Dependency Injection)을 통해 각 계층이나 서비스들간의 의존성을 맞춰준다. 이러한 기능들은 주로 환경설정을 담당하는 XML 파일에 의해 설정되고 수행된다.


관점 지향 프로그래밍 프레임워크[편집]

스프링은 로깅이나 보안, 트랜잭션 등 핵심적인 비즈니스 로직과 관련이 없으나 여러 곳에서 공통적으로 쓰이는 기능들을 분리하여 개발하고 실행 시에 서로 조합할 수 있는 관점 지향 프로그래밍(AOP)을 지원한다. 기존에 널리 사용되고 있는 강력한 관점 지향 프로그래밍 프레임워크인 AspectJ도 내부적으로 사용할 수 있으며, 스프링 자체적으로 지원하는 실행시(Runtime)에 조합하는 방식도 지원한다.


데이터 액세스 프레임워크[편집]

스프링은 데이터베이스에 접속하고 자료를 저장 및 읽어오기 위한 여러 가지 유명한 라이브러리, 즉 JDBC, iBATIS(MyBatis), Hibernate 등에 대한 지원 기능을 제공하여 데이터베이스 프로그래밍을 쉽게 사용할 수 있다.


트랜잭션 관리 프레임워크[편집]

스프링은 추상화된 트랜잭션 관리를 지원하며 XML 설정파일 등을 이용한 선언적인 방식 및 프로그래밍을 통한 방식을 모두 지원한다.


모델-뷰-컨트롤러 패턴[편집]

스프링은 웹 프로그램밍 개발 시 거의 표준적인 방식인 Spring MVC라 불리는 모델-뷰-컨트롤러(MVC) 패턴을 사용한다. DispatcherServlet이 Contoller 역할을 담당하여 각종 요청을 적절한 서비스에 분산시켜주며 이를 각 서비스들이 처리를 하여 결과를 생성하고 그 결과는 다양한 형식의 View 서비스들로 화면에 표시될 수 있다.


배치 프레임워크[편집]

스프링은 특정 시간대에 실행하거나 대용량의 자료를 처리하는데 쓰이는 일괄 처리(Batch Processing)을 지원하는 배치 프레임워크를 제공한다. 기본적으로 스프링 배치는 Quartz 기반으로 동작한다.


출처 위키백과

'Java > Spring' 카테고리의 다른 글

Java Spring에서 크로스 도메인(Cross Domain) 허용 설정  (2) 2017.08.31

마이크로소프트 윈도우


마이크로소프트 윈도우(영어: Microsoft Windows 마이크로소프트 윈도스[*])는 마이크로소프트가 개발한 컴퓨터 운영 체제이다. 애플이 개인용 컴퓨터에 처음으로 도입한 그래픽 사용자 인터페이스(GUI) 운영 체제인 맥 OS에 대항하여, 당시 널리 쓰이던 MS-DOS에서 멀티태스킹과 GUI 환경을 제공하기 위한 응용 프로그램으로 처음 출시되었다. 현재 전 세계 90%의 개인용 컴퓨터에서 쓰고 있으며, 서버용 운영 체제로도 점차 영역을 넓혀 나가고 있다. 윈도우 운영 체제의 경우 큰 시장 점유율을 차지하고 있는 까닭에 일반 사용자들에게 매우 익숙할뿐 아니라 호환되는 유명한 응용 프로그램이 많다는 장점을 지니고 있지만, 그만큼 보안 문제에서는 취약한 부분이 많은 운영 체제로 인식되기도 한다. 하지만 사실 보안문제에선 취약한 부분이 다른 운영체제와 차이날 정도로 독보적으로 많은 것은 아니다. 사용자가 적어서 보안문제가 없었을뿐, 어느 운영체제나 사용자만 많다면 언제든지 뚫릴수 있다.


한글 표기


영어 표기는 'Windows'이지만 한글로는 여러 가지 표기가 쓰이고 있다. 한국어권에서는 윈도, 윈도스, 윈도즈, 윈도우, 윈도우즈, 윈도우스 등 여러 가지 표기가 사용되고 있다. 1995년 대한민국 국립국어원은 컴퓨터 운영 체제 이름인 'Windows 95'를 '윈도 95'로 정하면서 'Windows'의 한글 표기를 윈도로 확정하였다.[1] 마이크로소프트에서는 제품 이름을 한글로 옮기지 않는 것을 원칙으로 하고 있어, 한국어 홈페이지에 있는 제품명은 모두 영문 이름 Windows을 그대로 사용하고 있으나, 필요에 따라 윈도우라는 한글 표기를 사용하고 있다.[2] 실제 출하된 제품의 포장에는 "한글 윈도우"로 표기되어 있으며, 공식 기술자료(KB)와 보도자료(Press) 등에도 "윈도우"라는 명칭이 사용된다.


버전


윈도우 1.0부터 3.1x에 이르는 버전들은 운영 체제가 아닌, MS-DOS 하에서 동작하는 일종의 소프트웨어로 간주된다.


초기 버전

 이 부분의 본문은 윈도우 1.0, 윈도우 2.0, 윈도우 2.1x입니다.

윈도우 3.0과 3.1[편집]

 이 부분의 본문은 윈도우 3.0, 윈도우 3.1x입니다.

윈도우 3.0은 애플의 맥 OS와 UI가 매우 흡사하였다.


윈도우 95, 98, Me

 이 부분의 본문은 윈도우 95, 윈도우 98, 윈도우 Me입니다.

윈도우 95가 새로운 사용자 인터페이스, 255자까지의 긴 파일 이름 지원, 플러그 앤 플레이를 통한 하드웨어 자동 설치 및 구성 등을 채용하면서 1995년 8월에 출시하였다. 순수 32비트 응용 프로그램을 직접 실행할 수 있고 윈도우 3.1에 비해 안정성을 높이고 몇 가지 기술을 향상시켰다. 윈도우 95의 OEM 서비스 릴리즈 (OSR) 버전이 몇 가지가 있으며 각기 서비스 팩과 비슷한 역할을 하였다. 윈도우 98이 1998년 6월에 출시되었으며 SE 버전이 1999년 5월에 출시되었다.


윈도우 NT 계열

 이 부분의 본문은 윈도우 NT, 윈도우 2000입니다.

최초의 NT 계열 운영 체제는 1993년에 나온 윈도우 NT 3.1이며 여기서 3.1이라는 숫자는 소비자용 윈도우 버전을 가리키며 뒤를 이어 1994년에 윈도우 NT 3.5, 1995년에 윈도우 NT 3.51, 1996년에 윈도우 NT 4.0, 2000년에 윈도우 2000이 출시되었다. 윈도우 2000은 마이크로소프트 제품 활성화를 포함하지 않는 마지막 NT 기반 윈도우이다. NT 4.0은 윈도우 95 사용자 인터페이스를 처음 도입하였으며 윈도우 95의 내장 32비트 런타임을 처음으로 포함하였다.


과거 윈도우 ME로 인해 쓴맛을 본 MS가 윈도우 9x 커널의 한계를 깨달고 기업용 커널인 NT커널로 윈도우 XP를 홈 에디션과 프로페셔널 에디션으로 출시하였다.과거 윈도우 9x보다 훨씬더 안정적인데다 향상된 시스템 복원 기능등 여러가지 기능을 향상시켜 출시하였다.(틈새 시장에서는 태블릿 PC, 미디어 센터용으로 출시) 그 뒤에 윈도우 XP를 출시한지 1년 반이 지나 서버용 운영 체제인 윈도우 서버 2003이 나왔다. 장기간의 개발 후 윈도우 비스타가 2006년 말에 출시되었으며 서버 제품으로 윈도우 서버 2008이 2008년 초에 출시되었다. 그 뒤에 2009년 7월 22일 윈도우 7과 윈도우 서버 2008 R2의 RTM 버전이 공개되었다. 윈도우 7은 2009년 10월 22일에 공식 출시되었다. 2013년 10월 17일(미국 현지시각) 윈도우 8.1이 공식 출시 되었다. 윈도우 8.1은 윈도우 8 사용자들은 무료로 업그레이드가 가능하다. 현재 윈도우 10이 정식출시 하였으며 2015년 7월29일에 전세계에서 출시되었다.


64비트 운영 체제

윈도우 NT에는 x86 기반 개인용 컴퓨터가 전문적인 세계를 차지하기 이전에 여러 플랫폼의 지원을 포함하였다. 당시 일부 제품이 64비트 프로세서였던 NT 3.1부터 4.0까지 파워PC, DEC 알파, MIPS R4000을 지원하였으나 운영 체제는 이들을 32비트 프로세서로 취급하였다.


인텔 아이테니엄 (IA-64)이 도입되면서 마이크로소프트는 이를 지원하는 새로운 버전의 윈도우를 출시하였다. 아이테니엄 버전의 윈도우 XP와 윈도우 서버 2003이 x86 (32비트)가 주류인 시대에 출시되었다. 2005년 4월 25일에 마이크로소프트는 x86-64 아키텍처를 위한 윈도우 XP 프로페셔널 x64 에디션과 윈도우 서버 2003 x64 에디션을 공개하였다. 마이크로소프트는 아이테니엄 버전의 윈도우 XP의 지원을 2005년에 중단하였다. 윈도우 비스타는 마이크로소프트가 최종 사용자 버전을 위한 x86, x64 에디션으로 처음 출시한 것이다. 윈도우 비스타는 아이테니엄 아키텍처를 지원하지 않는다. 현대의 64비트 윈도우 계열은 AMD64/IA-64 버전의 윈도우 7과 윈도우 서버 2008을 이루며 아이테니엄과 x64 에디션도 존재한다. 윈도우 서버 2008 R2에는 32비트 버전이 없지만 윈도우 7에는 존재한다.


윈도우 CE

 이 부분의 본문은 윈도우 CE, 윈도우 폰 7입니다.

윈도우 CE(윈도우 임베디드 콤팩트)는 위성 내비게이션과 일부 휴대 전화와 같은 소형 컴퓨터에 돌아갈 수 있게 만든 윈도우 에디션이다. 윈도우 CE는 드림캐스트에서 세가의 사유 운영 체제와 더불어 채용되기도 하였다.


윈도우 CE는 윈도우 NT 커널 기반을 하는 소형 에디션인 윈도우 XP 임베디드나 윈도우 NT 4.0 임베디드와는 다른 것이다.


윈도우 XP

 이 부분의 본문은 윈도우 XP입니다.

윈도우 XP는 윈도우 2000의 뒤를 잇는 제품이며, 윈도우 NT 커널을 기반으로 하는 마이크로소프트사의 최초의 소비자 지향 운영 체제이다. 'XP'라는 말은 eXPerience 중 "XP"를 따와서 만들었다. 2014년 4월 8일, 지원이 종료되었다.


윈도우 비스타

 이 부분의 본문은 윈도우 비스타입니다.

윈도우 XP의 후속작으로, 개인용 버전은 2007년 1월 30일에, 기업용 버전은 2006년 11월 30일에 발매되었다. 이때부터 에어로 테마가 시작되었다. 2017년 4월 11일, 지원이 종료되었다.


윈도우 7

 이 부분의 본문은 윈도우 7입니다.

윈도우 비스타의 후속작으로, 2009년 10월 22일에 6가지 에디션의 소매 버전으로 대중에게 출시되었다. 윈도우 7은 윈도우 비스타에서 이루어 놓은 응용 프로그램 및 하드웨어 호환성을 개선함과 더불어 윈도우 계열의 중심적이고 점층적인 업그레이드에 집중하였다.윈도우 비스타는 원래 에어로 효과가 있었지만 윈도우 7은 홈 프리미엄부터 시작됐다.[3] 2020년 1월 14일, 지원이 종료될 예정이다.


윈도우 8

 이 부분의 본문은 윈도우 8입니다.

윈도우 7의 뒤를 이어 윈도우 8이 공개 되었다. 마이크로소프트는 2010년 10월 22일에 네덜란드의 블로그 엔트리에 "2년 뒤에 윈도우 8이 공개될 것입니다."라는 글을 올렸다.[4] 2012년 6월 1일에 윈도우 8 릴리즈 프리뷰가 배포 되었고, 2012년 8월 1일에 윈도우 8 RTM이 MSDN, 테크넷을 통해서 공개되었다. 한국시간 기준으로 2012년 10월 26일 윈도우 8이 공식적으로 발표되었다. 그러나 버그가 많아 8.1로 바로 넘어갔다. 그리고 이때부터 메트로 테마를 적용하였다.


윈도우 8.1

 이 부분의 본문은 윈도우 8.1입니다.

윈도우 8의 기능 추가 및 핫픽스 롤업 통합 버전. 그 밖에 여러 기능들이 추가되었다. 윈도우 8 사용자들은 윈도우 스토어에서 무료로 업그레이드할 수 있다.


윈도우 10

 이 부분의 본문은 윈도우 10입니다.

2014년 9월 30일에 윈도우 10 테크니컬 프리뷰가 공식 발표되었다. 윈도우 9를 건너뛰고 윈도우 10을 개발했던 것이다. 사실 마이크로소프트는 윈도우 명칭을 윈도우 원(Windows One)이라고 지으려고 했던 것으로 알려져 있다. 하지만 윈도우 1.0이 이미 있었기 때문에 윈도우 원(1)이 아닌 10으로 지은 것으로 보인다. 한국 마이크로소프트 측은 차세대 윈도우의 이름을 '윈도우 10'이라고 지은 이유는 "윈도우 10이 많은 혁신을 담고 있기 때문"이라고 설명했다. 2015년 7월 29일 공식 발매를 시작하며 윈도우 7과 윈도우 8.1를 사용하는 모든 이용자에 한해서(비정품 이용자도 포함) 1년 간 무료로 윈도우 10으로 업데이트를 1년 후인 2016년 7월 29일까지 지원하였다. (추가 기능을 사용하는 윈도우에 한해 업그레이드 중이다.)


윈도우의 역사


마이크로소프트는 초기에 도스의 확장 소프트웨어로서의 윈도우를 출시하였으며 이는 운영 체제가 아니었다. 1993년 이후로 마이크로소프트는 "윈도우"라는 같은 이름을 사용하는 윈도우 NT를 운영 체제로 출시하기 시작하였다. 초기에 운영 체제로서의 윈도우에서는 일반적으로 두 가지 버전으로 출시되었다. 하나는 가정 사용자, 다른 하나는 기업과 전문 IT 사용자용이다. 이 두 운영 체제는 가정용 버전의 경우 게임이나 시각 효과가 더 많이 지원되고 네트워킹이나 보안 등의 기능을 빼는 한편, 전문가용 버전에서는 시각 효과를 제외하고 네트워킹이나 보안을 강화하였다.


첫 독립된 버전 윈도우 1.0은 도스의 확장 소프트웨어로서 1985년 11월에 출시되었다. 윈도우 2.0은 1987년 12월에 출시되었다. 윈도우 2.03에서는 서로 겹치는 창을 사용할 수 있게 되었다. 이것 때문에 애플은 마이크로소프트가 자사 특허를 침해했다는 소송을 걸기도 했다.


윈도우 3.0은 1990년에 출시되자 첫 6개월 만에 2백만 부가 팔릴 만큼 큰 성공을 거두었다. UI 및 멀티태스킹이 많이 개선되었다. 이후 발표된 윈도우 3.1은 트루타입 글꼴을 지원하였는데, 영문 윈도우 3.0과 3.1 사이에 발표된 한글 윈도우 3.0의 경우 영문 윈도우 3.1에 앞서 트루타입 글꼴이 적용되었다.


1993년 7월, 마이크로소프트는 윈도우 NT를 내놓았다. 윈도우 NT는 전문가용 운영 체제로 인정되었고 실제로 네트워크용이었으며, 후에 출시된 윈도우 XP의 초석이 되었다.


1995년 8월 윈도우 95가 출시되었다. 표면적으로 윈도우 95는 도스를 포함하지만 도스 상에서 실행되지 않는 완전한 운영 체제가 되었으며, UI가 많이 변경되고 멀티태스킹 기능이 대폭 향상되었다. 윈도우 95는 기본적으로 32비트 운영 체제였지만 16비트 하위 호환성을 유지하였다. 3.1과의 호환성을 맞추기 위해 GUI API 등에서 16비트 코드를 수용한 까닭에 성능과 안정성이 떨어졌다.


1998년 6월 윈도우 98이 출시되었다. 인터넷 익스플로러 4.0을 탑재하는 등 크기가 커지면서 윈도우 95에 비해 느리다는 지적을 많이 받았지만 1999년 윈도우 98 SE를 내놓으면서 많은 문제를 개선했다. 하지만 윈도우 98 SE는 자잘한 업데이트를 패치 받고는 2006년에 윈도우 98과 함께 지원 종료된다.


마이크로소프트는 기업/전문가용 운영 체제인 윈도우 2000을 2000년 2월에 내놓았다. 하지만 윈도우 98의 후속작은 윈도우 ME였고 이는 2000년 9월에 나왔다. 윈도우 ME는 유니버설 플러그 앤 플레이와 시스템 복원 등의 기능을 새로 추가했지만, 출시된 지 1년이 지나지 않아 윈도우 XP가 출시되어 하드웨어나 소프트웨어 제조사들의 지원이 제대로 이루어지지 않아 호환성이 부족했고 메모리 관리가 미흡하여 리소스 부족 문제를 자주 발생시켰다.


2001년 10월 마이크로소프트는 윈도우 XP를 출시하였다. 이 버전은 윈도우 NT 커널을 기반으로 하면서 윈도우 95 및 그 후계작의 사용자 편의성을 살렸다. "홈 에디션"과 "프로페셔널"으로 나뉘어 출시되는데, 두 에디션은 완전하게 동일하며 단지 두 가지 기능만 다르다. 도메인에 가입하는 기능과 MUI를 지원하는 기능 이 두 가지 기능이 "홈 에디션"엔 빠져 있다. 윈도우 XP 서비스 팩 3은 2008년 4월 21일 발표되었다.


"윈도우 XP 미디어 센터" 에디션이 2003년, 2004년, 2005년에 출시되었는데, 이는 DVD/TV 기능에 초점을 맞추었고, 프로그램 녹화 및 원격 조정을 지원한다. 업데이트를 지원하지 않았으며, 매년 새 버전이 출시되다가 윈도우 비스타가 출시되면서 단종되었다.


2003년 4월, 윈도우 서버 2003이 출시되었다. 이는 윈도우 2000 서버 제품군에 비해서 새로운 기능과 강력한 보안을 내세우고 있다. 후속작으로 2005년 12월 윈도우 서버 2003 R2 버전을 출시했다. 윈도우 2003 서비스 팩 2는 2007년 3월에 발표되었다.


2007년 1월 윈도우 비스타가 (코드네임 "롱혼") 출시되었다. 윈도우 비스타는 UAC 기능을 포함하여 윈도우 XP보다 보안이 더욱 강화되었고 미디어센터 기능 등이 추가되었다. 그러나 호환성 문제로 일부 국가에서 XP 기반의 프로그램이 비스타에서 작동되지 않는 문제 때문에 일부 사용자들이 XP로 다운그레이드를 하는 상황까지 벌어졌다.


2008년 3월 윈도우 서버 2008은 윈도우 서버 2003의 후계작으로 개발이 완료되었으며 2008년 3월 20일에 출시되었다.


2009년 10월 마이크로소프트가 2009년 10월, 비스타의 호환성 문제와 일부 기능을 개선하여, 윈도우 7을 출시했다.


2012년 10월, 윈도우 8이 공개되었다.


2013년 10월 17일(한국 시각), 윈도우 8.1이 공개되었다. 공개 이후부터 기존 윈도우 8 정품 사용자는 윈도우 스토어에서 무료로 내려받을 수 있다. 윈도우 8.1에서는 Sound Recorder, Scan 등의 기본 앱이 추가되었고, 타일의 크기를 4가지 중 선택할 수 있다. 그리고 본래 윈도우 8에서는 존재하지 않았던 작업 표시줄의 시작 버튼이 다시 생겨났다.


2014년 9월 30일 공개 되었으며 10월 2일(한국 시각 새벽 1시), 윈도우 10프리뷰가 배포되기 시작했다. 윈도우 95, 98등과 이름에러(프로그램이 윈도우 95,98을 윈도우 9까지만 인식을 하는게 대부분이기 때문임)를 줄이기 위해 9을 건너 뛰고 10이 되었다.


2015년 7월 29일, 윈도우 10 정식판이 출시되었다. 1년 간 무료 업그레이드를 제공하였다.


출처 위키백과

Yum


Yum은 Yellow dog Updater, Modified의 약자로 RPM 기반의 시스템을 위한 자동 업데이터 겸 패키지 설치/제거 도구이다. 듀크 대학교의 Linux@DUKE 프로젝트의 일부분으로 개발되었다. yumex 같은 GUI 기반 확장 도구도 있다.


Yum 이전에 있었던 Yellowdog Updater (YUP) 도구를 대체하며, 듀크 대학교 물리학부에서 사용되었던 레드햇 리눅스 시스템 관리를 위해서 등장하였다. 그 이후로 페도라, CentOS 등 많은 RPM 기반 리눅스 배포판에서 사용되었다. 레드햇의 패키지 관리자 up2date에서도 Yum 저장소에 접근할 수 있다.


현재 GNU 일반 공중 사용 허가서 버전 2 이상으로 사용 가능하다.


Yum은 페도라 22 버전 이후부터 DNF로 전환되고 있다. 그러나 여전히 Yum의 전신인 rpm, 그리고 후신인 DNF와 같이 사용 가능하다.


    기본 사용법

    • 패키지 설치 : yum install 패키지명
    • 패키지 삭제 : yum remove 패키지명
    • 패키지 업그레이드 : yum update 패키지명
    • 패키지 조회 : yum search 패키지명
    • 패키지 목록 : yum list 패키지명
    • yum 데이터베이스 동기화 업데이트 : yum update  


    출처 위키백과

    자바 (프로그래밍 언어)


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


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


    역사


    자바 언어는 1991년 6월 셋톱 프로젝트를 위해 제임스 고슬링(James Gosling)이 만들었다. 이 언어는 원래 제임스 고슬링의 사무실 밖에 있던 오크 나무를 따다 오크(Oak), 혹은 그린(Green) 이라고도 불렀으나, 단어 리스트 중 무작위로 뽑은 자바(Java)를 선택했다. 고슬링의 목표는 C/C++ 스타일의 언어와 가상 머신을 구현하는 것이었다. 첫 공개 자바 버전은 1995년의 자바 1.0 이었다. 한 번 쓰고 어느 곳에도 실행 "Write Once, Run Anywhere"하는 것을 약속하였고 인기 플랫폼에 무료 런타임을 제공하였다. 이 플랫폼은 꽤 안정성을 지녔고 보안 시스템은 여러 설정을 통해 네트워크 및 파일 접근을 통제할 수 있었다. 대부분의 브라우저들은 곧 자바 애플릿(Java Applet)을 웹 페이지 안에서 실행할 수 있었고 자바의 인기는 급상승했다. 자바2(JDK 1.2 ~ 1.4)의 출현으로 여러 다양한 플랫폼에서 사용할 수 있는 설정(Configuration)들을 만들었다. 예를 들어 J2EE는 엔터프라이즈 애플리케이션을 실행할 수 있고, J2ME는 모바일 애플리케이션을 실행할 수 있다. J2SE는 스탠다드 에디션으로 지정되었다. 2006년에 마케팅용으로 Java EE, Java ME, Java SE 순서대로 명칭을 바꾸었다.


    썬 마이크로시스템즈는 1997년 ISO/IEC JTC1 표준화 그룹, 그리고 나중에는 ECMA International 그룹과 접촉하여 정식 승인을 받으려 했으나 곧 이 프로세스에서 철수했다. 자바는 사실상 (de facto)의 표준이며 자바 커뮤니티 프로세스(Java Community Process)를 통해 관리되고 있다. 썬 마이크로시스템즈는 자바의 대부분을 무료로 배포하였으나 오픈이 아닌 사유 소프트웨어였다. 썬 마이크로시스템즈는 자바 엔터프라이즈 시스템같은 특정 라이선스를 팔아서 수입을 올렸다. 썬(SUN) 사는 자사의 개발용(소프트웨어 개발 키트 (SDK))과 개발용의 일부인 실행용(자바 런타임 환경, JRE)을 구분한다. 실행용에는 컴파일러, 유틸리티 및 여러 개발용 헤더 파일이 포함되어 있지 않다.


    2006년 11월 13일 썬 마이크로시스템즈는 대부분은 자바를 GPL 라이선스로 소스를 오픈하였으며 2007년 5월 8일 이 과정을 마쳤다. 썬 마이크로시스템즈가 권한을 가지고 있지 않은 대부분의 코어 부분을 오픈하였다. 2009년 4월 20일 제작사인 썬 마이크로시스템즈가 오라클과 인수합병됨에 따라 자바에 대한 권리 및 유지보수 또한 오라클로 넘어가게 되었다.


    철학


    자바 언어는 다음 5가지의 핵심 목표를 지니고 있다.[출처 필요]


    객체 지향 방법론을 사용해야 한다.

    같은 프로그램(바이트코드)이 여러 운영 체제(마이크로프로세서)에서 실행될 수 있어야 한다.

    컴퓨터 네트워크 접근 기능이 기본으로 탑재되어 있어야 한다.

    원격 코드를 안전하게 실행할 수 있어야 한다.

    다른 객체 지향 언어들의 좋은 부분만 가지고 와서 사용하기 편해야 한다.

    자바는 초기 설계부터 객체 지향 언어(객체 지향 프로그래밍)로 설계되었다. C가 C++로 진화한 것과는 차이가 있다. 그리고 같은 코드로 어떤 마이크로프로세서에서나 실행되기를 원했다. 따라서 자바만의 실행 코드인 바이트코드라는 중간 코드를 컴파일러에 의해 생성한다. 그리고 자바 가상 머신(JVM)에 의해 해석되어 실행된다. 따라서 C/C++ 코드로 작성되어 생성된 코드보다 일대일 상황이면 실행 속도가 느리다. 그러나 장점은 같은 코드로 다양한 플랫폼이나 운영 체제에서 실행될 수 있다는 점이다.


    자바 실행 코드 생성 및 마이크로프로세서와 관계


    자바가 여러 개의 마이크로프로세서(CPU)에서 같은 코드가 실행되기 위해서는 C/C++의 프로그램의 실행 구조와는 다른 방식이 필요하다. C/C++가 특정 CPU의 기계어 코드를 직접 생성하면, 이 기계어 코드가 메모리에 적체되어 바로 실행된다. 따라서 C/C++은 CPU가 달라지면 컴파일러가 달라져야 한다. 임베디드 프로그램의 경우, gcc는 gcc 소스를 사용해서 특정 CPU를 지정하고, 컴파일러(x86 플랫폼에서)로 크로스 컴파일러를 만들 수 있다. x86 리눅스용 프로그램 만든다면, x86 컴파일러를 만들 수 있다. ARM용 프로그램이라면 ARM을 지정하고 컴파일러 소스를 컴파일러(x86에서 실행되는)로 ARM용 크로스 컴파일러를 만들 수 있다. 만약 gcc을 사용하고 싶지 않거나 gcc 컴파일러가 없다면,특정 CPU 개발 도구는 구입을 해서 사용한다. 그러나 자바는 같은 코드를 사용하여 다른 CPU에서 실행되도록 하기 위해 직접 CPU의 기계어 코드를 생성해서는 안 된다. 그 대신 자바는 바이트코드(Java bytecode)라는 것을 생성한다. 이것을 자바 가상 머신(JVM, Java virtual machine)이 해석을 하여 실행한다. 자바 가상 머신이 인터프리터가 되어 코드 해석 방식의 실행을 함으로써, 같은 바이트코드를 가지고 여러 가지의 CPU에서 실행이 가능해진다. JVM은 CPU와 직접적 관계가 있으므로 이것은 CPU의 기계어 코드로 이루어진다.


    자바 실행 모델과 자바 바이트코드의 예

    자바의 실행 방식은 스택 실행 방식 언어(stack-oriented programming language)를 생각할 수 있다.

    int main()
    {
      int a = 10;
      int b = 20;
      int c;
       c = a + b;
       printf("%d", c);
       // ...
    }

    이것을 C/C++를 x86 프로세서용 컴파일러로 컴파일하면, 컴파일러와 최적화 등에 따라 다를 수 있지만 다음과 같은 예의 코드가 생성될 수 있다. C 언어에서 실행할 때, 지역변수는 스택이나 CPU의 레지스터를 이용한다. 스택이냐 레지스터냐는 개발 도구의 옵션에서 설정하는 최적화와 함수 내의 변수의 숫자와 관련이 있다. 함수의 블럭이 시작되면 레지스터를 스택에 대피시키고, EBP를 스택의 포인터 값으로 설정하여 변수의 베이스 주소로 사용한다. 스택을 이용한다면 다음과 같은 어셈블리 결과를 생각할 수 있다.


    x86 프로세서에서 어셈블리어 코드 예는 :

     mov eax, DWORD PTR 4[ebp]
     mov edx, DWORD PTR 8[ebp]
     add eax, edx
     mov DWORD PTR 12[ebp], eax

    이 코드는 2개의 정수형 숫자를 더해 다른 곳에 넣는 과정이다. 메모리에 적체된 코드를 x86이 읽어 실행시킬 수 있는 기계어로 일대일 대응된다. bp 레지스터는 CPU의 스택을 베이스로 한 포인터 레지스터 이다. 주로 지역변수로 선언된 경우 스택을 사용한다.


    그러나 자바에서 보면 :

    0 iload_1
    1 iload_2
    2 iadd
    3 istore_3

    2개의 숫자를 더하기 위해 스택에 넣고, 다시 스택에서 꺼내서 더한다. 더한 값을 다시 스택에 넣는다.


    이 코드는 특정 CPU의 기계어 코드가 아니라, 자바 고유의 기계어로 생각할 수 있는 코드 형태이다. JVM이 읽어 해석한 후, 해당 코드의 기능을 수행한다.


    버전


    자바의 버전은 보통 Java SE 또는 JDK/JRE의 버전으로 말한다.

    JDK(Java Development Kit)는 표준 라이브러리를 포함하며, JDK 버전이 바뀜에 따라 이 라이브러리가 확대되고 API가 바뀐다. 초기 1.0/1.1 버전에서 JDK/JRE의 명칭을 사용하다가 Java 1.2가 발표되면서 J2SDK/J2RE라고 개명하여 사용했으나 기존의 명칭으로 사용하는 사람들이 많아 현재는 다시 JDK/JRE의 명칭으로 돌아왔다. 또한 J2SE(Java2 Standard Edition)라는 명칭 또한 Java SE(Java Standard Edition)으로 변경되었다. [2]

    자바 버전 체계의 메이저 버전(소숫점 위)이 계속 1.x로 고정되어 마이너 업데이트로 여기는 경우들이 있어 1.5 버전부터 5.0(1.5), 6(1.6)의 형태로 제품 버전을 코드 버전과 별개로 발표하고 있다.[3]

    언어 자체는 자바 언어 명세(Java Language Specification, JLS)에서 정의되며, 판(edition)으로 구분한다. JDK가 확장되는 동안 언어는 2판에서 거의 변화가 없었으나, JDK 5와 함께 바뀐 JLS 3판에서 제네릭(generic) 타입, 애너테이션(annotation) 같은 기능이 도입되면서 상당히 바뀌었다.

    JDK 7에서는 자바 언어에 상당한 변화가 계획되어 있었으나 JDK 7로 예정되었던 변화가 JDK 7와 JDK 8으로 나뉘면서 JDK 7에는 상대적으로 사소한 언어 특성만이 추가되었다. 구체적으로 이진수 표기 추가, 가독성을 위해 수 표기에 밑줄(underscore)을 허용, 스위치 문(switch에서 문자열 사용, 제네릭 타입 객체 생성 시 타입 추론(type inference), 자동 자원 해제를 위한 try 문법, 여러 예외 타입을 동시에 잡도록 허용하는 문법 등이 추가되었다.

    현재 자바 언어는 JLS 3판, JDK는 버전 9이다.

    • JLS 1판
    • JLS 2판
      • JDK 1.4: assertion 기능 추가
    • JLS 3판(JDK 5)


    현재 오라클 공식 홈페이지에서 JDK 8, Java.net에서 JDK 9이 배포 중이며, 다운로드 페이지 오른쪽에 있는 약관 동의에 체크하고 그 아래 링크를 이용해 다운로드 받을 수 있다.


    출처 위키백과

    'Java' 카테고리의 다른 글

    자바 [JAVA] 실행 시간  (0) 2017.09.09

    PySide

    원저자 Openbossa

    개발자 Qt 프로젝트

    초판 2009 년 8 월 18 일 

    안정적 출시

    2014 년 10 월 1.2.4 / 14 일 

    파이썬

    운영 체제 Linux / X11 , Mac OS X , Windows 및 Maemo

    특허 LGPL

    웹 사이트 www.pyside.org


    PySide는 크로스 플랫폼 GUI 툴킷 Qt 의 파이썬 바인딩 입니다 . 표준 라이브러리 패키지 Tkinter의 대안 중 하나입니다 . Qt와 마찬가지로, PySide는 자유 소프트웨어 입니다. 이 프로젝트 는 Boost C ++ 라이브러리 에서 Boost.Python 을 사용 하여 바인딩을 시작한 후 바인딩 생성기 Shiboken 로 전환 하여 바이너리 크기와 메모리 사용량을 줄였습니다.

    PySide는 아래 출시 된 LGPL에 의해 2009 년 8 월에 노키아 ,  Qt는 툴킷의 전 소유자, 노키아와 합의에 도달하는 데 실패 후 PyQt는의 개발자 강둑 컴퓨팅 포함하도록 라이선스 조건을 변경하도록 LGPL을 대체 라이센스로 . The Qt Company 의 발표  에 따라 PySide2 프로젝트 이름으로 Qt 5에서 작업하도록 PySide를 업데이트하는 작업이 현재 진행 중 입니다.

    PySide는 Linux / X11 , Mac OS X , Windows 및 Maemo를 지원 합니다. 안드로이드 에 대한 지원 은 현재 PySide 커뮤니티에 의해 추가되고 있습니다.





    Hello World 예제 


    # Import PySide classes
    import sys
    from PySide.QtCore import *
    from PySide.QtGui import *
    
    # Create a Qt application
    app = QApplication(sys.argv)
    
    # Create a Window
    mywindow = QWidget()
    mywindow.resize(320, 240)
    mywindow.setWindowTitle('Hello World!')
    
    # Create a label and display it all together
    mylabel = QLabel(mywindow)
    mylabel.setText('Hello World!')
    mylabel.setGeometry(QRect(130, 110, 60, 10))
    mywindow.show()
    
    # Enter Qt application main loop
    sys.exit(app.exec_())


    출처 위키백과

    Linux, CentOs에서 MySQL버전을 확인하는 방법입니다.


    [root@H_Utblog /]# mysql --version mysql Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using EditLine wrappe


    Mysql 버전은 5.7.18입니다.

    'Linux > MYSQL' 카테고리의 다른 글

    MySQL root 패스워드 분실시  (5) 2017.08.30

    python에서 cx_Freeze으로 exe 파일,  Gui 실행 응용프로그램 만들기


    실행 환경 python34


    1. cx_Freeze 패키지 다운로드



    1_ pip로 download, cmd로 다운로드  /* python 환경변수 설정에 맞는 버전이 설치됨 */

    C:Python34> pip install cx_Freeze

     

    2_ pycharm으로 다운로드

    url 참조 클릭하세요  /* python 환경변수 설정에 맞는 버전이 설치됨 */


    3_ wheel로 다운로드



    python version에 맞는 wheel 파일 다운로드 후 

    C:\Python34\Scripts에 파일 이동시킵니다.

    cmd 관리자 모드로 들어가서 


    C:\Python34\Scripts>pip install cx_Freeze-5.0.1-cp34-cp34m-win32.whl

    Processing c:\python34\scripts\cx_freeze-5.0.1-cp34-cp34m-win32.whl

    Installing collected packages: cx-Freeze

    Found existing installation: cx-Freeze 5.0.2

    Uninstalling cx-Freeze-5.0.2:

    Successfully uninstalled cx-Freeze-5.0.2

    Successfully installed cx-Freeze-5.0.1


    C:\Python34\Lib\site-packages안에 cx_Freeze 패키지 확인


    2. python project에 setup.py만들기


    project 폴더 바로 밑에 setup.py 생성



    3. exe 파일 생성


    1_ 실행전 확인 사항


    시스템 환경변수  확인  

    PYTHON_HOME : ***Python34

    PYTHONPATH : ***Python34\Lib

    /* 파이썬의 경우 2버전과 3버전을 같이 쓰는 경우가 많은데 이런 경우에 시스템 변수에서 파이썬이 어떤 변수를 보고 있는지 체크해보는게 가장 중요합니다. 


       첫 번째로 window의 경우 컴퓨터 고급설정에 들어가 환경변수를 직접 확인할 수 있습니다. PYTHON_HOME과 PYTHONPATH가 파이썬 의 환경변수 설정입니다.


      두 번째로 cmd를 통해서 확인이 가능합니다.

    cmd의 경우 cmd창에서 python혹은 python -v 또는 which python정도가 있습니다. */


    2_ python project 파일 밑에 setup.py의 위치에서 


    C:python_project_path> python setup.py build


    3_ 생성된 exe 파일 위치


    python project 폴더 밑에 build 폴더 밑에 exe파일 생성된 것을 확인 할 수 있습니다.








    'python' 카테고리의 다른 글

    python print  (1) 2017.09.24
    python 소개  (0) 2017.09.06

    python pycharm에서 library 받아오는 방법

    파이참에서 패키지 받는 방법


    1. 왼쪽 상단의 File 클릭


    2. Settings... Alt + F7 클릭 





    3. Project : my project name -> Project Interpreter 클릭 



    4. 선택 사항. 환경변수 등록 해놓은 python version 등록



    5. 오른쪽 상단의 초록색 "+" 버튼 클릭




    6. 검색 창에 내가 찾는 library 검색 후 Install Package 버튼 클릭 

    Specify  version = default는 최신버전입니다. 원하는 버전을 선택하여 패키지를 다운로드 해주세요.

    ※ python version 설정이 되어있지 않은 경우 패키지 다운이 안될 수 있으니 환경변수 등록후 python 버전 등록 후 사용해주세요.

    ※ python bit가 64비트인경우 호환문제 때문에 패키지 다운이 되지 않는 경우가 많습니다.




    windows에서 mysql 버전을 확인하는 방법입니다.

    현재 window PC에는 MariaDB가 배포되어있어 MariaDB로 테스트하였습니다. mysql 버전확인 또한 동일합니다.



    C:\> mysql -v

    Welcome to the MariaDB monitor. Commands end with ; or \g.

    Your MariaDB connection id is 2 Server version: 10.0.17-MariaDB mariadb.org binary distribution Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> exit Bye




    MariaDB version :  10.0.17-MariaDB

    'MySQL' 카테고리의 다른 글

    MySQL 소개  (0) 2017.09.06

    php는 apache와 연동되어 사용된다. 


    이전작업

    apache 설치


    1. yum 저장소 설치 및 확인  <-- 클릭


    2. 선택작업

    php 설치 과정에서 오류가 났을 경우 그냥 모든 php를 삭제하고 다시 시작


    # yum remove *php*


    php 제거 확인


    # yum list installed *php* /*아무것도 뜨지 않으면 지워진 것*/



    3. 저장소추가


    # yum --enablerepo=remi-php56 list | grep php 


    4. php install


    # yum --enablerepo=remi-php56 install php


    5. mysqlnd install 


    # yum --enablerepo='remi-php56' list | grep php-mysql

    php-mysqlnd.x86_64                         5.6.31-1.el7.remi          @remi-php56

    php-mysql.x86_64                           5.4.16-42.el7              base

    php54-php-mysqlnd.x86_64                   5.4.45-13.el7.remi         remi-safe

    php55-php-mysqlnd.x86_64                   5.5.38-7.el7.remi          remi-safe

    php56-php-mysqlnd.x86_64                   5.6.31-1.el7.remi          remi-safe

    php70-php-mysqlnd.x86_64                   7.0.23-1.el7.remi          remi-safe

    php71-php-mysqlnd.x86_64                   7.1.9-1.el7.remi           remi-safe

    php72-php-mysqlnd.x86_64                   7.2.0-0.21.RC1.el7.remi    remi-safe

    /*php와 mysql을 연결해주는 패키지확인 php패키지와 php-mysql패키지의 버전이 같아야 한다*/

    # yum --enablerepo='remi-php56' install php-mysqlnd.x86_64

    6. 정상적으로 php가 install시

    #cd /usr/lib64/php/modules  
    /*경로가 다를 경우 #find / -name modules -type d */
    #ls
    bz2.so
    curl.so      
    ftp.so      
    json.so     
    mysql.so      
    pdo_sqlite.so  
    sqlite3.so
    calendar.so
    exif.so
    gettext.so  
    mysqli.so   /*php와 mysql 연결을 위한 so*/
    pdo_mysql.so  
    phar.so        
    tokenizer.so
    ctype.so     
    fileinfo.so  
    iconv.so    
    mysqlnd.so  
    pdo.so        
    sockets.so     
    zip.so

    mysqli.so 존재시 성공.


    7. 브라우저에서 php설치 확인


    1) # mkdir /var/www/html/info.php 

    2) # cd /var/www/html/info.php

    3) # vi info.php

    4) i 키를 누른 후 insert라는 문자가 왼쪽 하단에 뜨면 

    <?php phpinfo(); ?>  <-----입력


    입력 후 키보드  Esc -> : -> wq -> Enter 


    5) 브라우저 띄우고 localhost/info.php

    6) php화면이 뜨면 성공







    'php' 카테고리의 다른 글

    Windows에서 Apache 2.4.X 와 PHP 5.6.X 설치  (0) 2017.09.08
    PHP 소개  (0) 2017.09.06

    + Recent posts