GNU 스텝

GNUstep
GNUstep 프로젝트
GNUstep logo.svg
Gnustep.png
GNUstep 스크린샷은 GNUstep 라이브러리와 GNUstep 라이브러리로 개발된 GNUstep 게임, 계산기, [1]TextEdit을 포함한 다양한 애플리케이션을 보여줍니다.
개발자GNUstep 개발자
안정된 릴리스
make 2.9.0, base 1.28.0, gui 0.29, back 0.29 / 2021년 5월 6일; 14개월 전(2021-05-06)
프리뷰 릴리즈
SVN 소프트웨어 저장소에서만
저장소
기입처목표-C
운영 체제크로스 플랫폼
유형위젯 툴킷
면허증.응용 프로그램용 GNU General Public License
라이브러리용 GNU Lesser General Public License.
웹 사이트www.gnustep.org

GNUstepUnix유사한 운영 체제 및 Microsoft Windows용 Cocoa(이전의 OpenStep) Objective-C 프레임워크, 위젯 툴킷 및 응용 프로그램 개발 도구의 무료 소프트웨어 구현입니다.GNU 프로젝트의 일부입니다.

GNUstep은 크로스 플랫폼, 객체 지향 IDE를 갖추고 있습니다.기본 Objective-C 인터페이스와는 별도로 GNUstep은 Java,[2] Ruby, GNU Guile [3]Scheme용 바인딩도 갖추고 있습니다.GNUstep 개발자들은 호환성을 유지하기 위해 애플의 코코아에 추가된 몇 가지 사항을 추적하고 있다.GNUstep 어플리케이션인터페이스의 루트는 Cocoa의 루트와 같습니다.NeXTSTEP 및 OpenStep입니다.따라서 GNUstep은 애플이 NeXT의 기술을 인수하여 오리지널 Mac OS X의 개발에 통합하면서 등장한 코코아보다 앞서고, GNUstep은 기술적으로 야심찬 NeXTSTEP의 프로그래머 친화적인 기능을 복제하기 위한 GNU 개발자들의 노력이었다.

역사

GNUstep은 Stanford Linear Accelerator Center의 Paul Kunz와 다른 사람들이 HippoDraw를 NeXTSTEP에서 다른 플랫폼으로 이식하기원했을 때 시작되었습니다.HippoDraw를 처음부터 다시 작성하고 애플리케이션 설계만 재사용하는 대신 애플리케이션이 의존하는 NextSTEP 객체 계층을 다시 쓰기로 결정했습니다.이것이 libobjcX의 첫 번째 버전입니다.이를 통해 애플리케이션 소스를 한 줄도 변경하지 않고 X Window 시스템을 실행하는 Unix 시스템에 HippoDraw를 이식할 수 있었습니다.1994년 OpenStep 사양이 일반에 공개된 후, 그들은 새로운 API를 준수하는 새로운 objcX를 작성하기로 결정했습니다.이 소프트웨어는 "GNUstep"[4]으로 알려지게 됩니다.

소프트웨어 아키텍처

디스플레이 서버, 그래픽 제어 요소 라이브러리 또는 그래픽 셸과 같은 Linux 데스크톱 스택의 소프트웨어 구성 요소를 보여 줍니다.

렌더링

GNUstep에는 Objective-C 프로그래밍 언어로 작성된 그래픽 제어 요소 세트가 포함되어 있습니다.

GNUMail그래피컬 유저 인터페이스(GUI)는 그래픽스 컨트롤 요소로 구성되어 있습니다.GNUMail은 X11이나 Wayland와 같은 윈도우 시스템과 상호 작용해야 하며 그래픽 사용자 인터페이스를 렌더링해야 합니다.GNUstep의 백엔드는 사용자 인터페이스 라이브러리가 실제 윈도우 시스템에 인터페이스하기 위해 사용하는 작은 함수 집합을 제공합니다.또한 일반적인 Postscript 함수를 에뮬레이트하는 렌더링 엔진도 있습니다.패키지 gnustep-back은 다음 백엔드를 제공합니다.

  • 카이로 – 카이로 2D 그래픽 라이브러리를 사용하는 기본 백엔드.
  • winlib : Microsoft Windows 시스템의 기본 백엔드.Cairo 및 Windows API 버전.
  • art – Unix와 유사한 시스템의 오래된(사용되지 않는) 백엔드.벡터 기반 PostScript like 2d 그래픽 라이브러리 Libart를 사용합니다.
  • xlib: 오래된(사용되지 않는) X11 백엔드.

패러다임

GNUstep은 OPENSTEP(GNUSTEP은 코코아보다 앞서지만 코코아는 OPENSTEP을 기반으로 함) 및 Objective-C 언어를 계승합니다.

기타 인터페이스

Objective-C 인터페이스 외에 GNUstep 엄브렐라 아래의 일부 소규모 프로젝트에서는 Apple의 다른 API를 구현합니다.

  • 보론 라이브러리는 Carbon API를 구현하는 것을 목표로 합니다.그것은 매우 [5]불완전하다.
  • CoreBase 라이브러리는 Core Foundation과 호환되도록 설계되었습니다.Base(Foundation Kit) 컴포넌트를 단순히 [6]랩퍼로 감싸는 것만으로는 충분하지 않습니다.
  • QuartzCore 라이브러리는 코어 애니메이션 API를 [7]구현합니다.Opal 라이브러리는 Quartz 2D를 구현합니다.

2020년 2월 현재 GNUstep Objective-C 환경에 대해 Swift 프로그래밍 언어를 구축하는 프로젝트는 없습니다.

적용들

다음은 GNUstep용으로 작성되었거나 GNUstep으로 [8]이식된 응용 프로그램의 예입니다.

처음부터 작성

NextSTEP, OPENSTEP 또는 macOS에서 이식됨

GNUstep의 포크

클래스 기능

파운데이션 키트

Foundation Kit는 래퍼 클래스 및 데이터 구조 클래스와 같은 기본 클래스를 제공합니다.

  • 줄들
  • 컬렉션(로그인, 세트, 사전) 및 열거자
  • 파일 관리
  • 오브젝트 아카이브
  • 고도의 날짜 조작
  • 분산 객체 및 프로세스 간 통신
  • URL 처리
  • 통지(및 분산 통지)
  • 간단한 멀티캐스팅
  • 타이머
  • 예외 처리

응용 프로그램 키트

Application Kit는 그래픽 사용자 인터페이스 기능을 중심으로 한 클래스를 제공합니다.

  • 사용자 인터페이스 요소(테이블 뷰, 브라우저, 매트릭스, 스크롤 뷰)
  • 그래픽스(WYSIWYG, 포스트스크립트 라이크 그래픽스, 베저 패스, 여러 표현을 사용한 이미지 처리, 그래픽 컨텍스트)
  • 색상 관리(디바이스 색상과 비교하여 보정됨, CMYK, RGB, HSB, 회색 및 이름 있는 색상 표현, 알파 투과성)
  • 텍스트 시스템 기능: 리치 텍스트 형식, 텍스트 첨부 파일, 레이아웃 관리자, 식자, 규칙, 단락 스타일, 글꼴 관리, 맞춤법
  • 문서 관리
  • 인쇄 기능: 인쇄 조작, 인쇄 패널 및 페이지 레이아웃
  • 헬프 매니저
  • 페이스트 보드(클립 보드라고도 함) 서비스
  • 철자 검사기
  • 응용 프로그램의 작업 영역 바인딩
  • 드래그드롭 조작
  • 애플리케이션 간의 서비스 공유

「 」를 참조해 주세요.

레퍼런스

  1. ^ NextSTEP에서 이식.최근 빌드에서는 libobjc2로 빌드할 때 Mac OS X Snow Leopard에서 이식된 최신 버전을 사용할 수 있습니다.
  2. ^ "GNUstep Developer Tools - RIGS". www.gnustep.org. Retrieved 10 April 2018.
  3. ^ GScheme 2005-12-18 Wayback Machine 아카이브 완료
  4. ^ "GNUstep History". gnustep.made-it.com. Retrieved 10 April 2018.
  5. ^ "gnustep/libs-boron: Boron is the atom that comes before carbon". GitHub. GNUstep. 23 March 2019.
  6. ^ "gnustep/libs-corebase". GNUstep. 19 November 2019.
  7. ^ "gnustep/libs-quartzcore". GNUstep. 11 December 2019.
  8. ^ "Category:Applications - GNUstepWiki". wiki.gnustep.org. Retrieved 10 April 2018.
  9. ^ "GNUstep Objective-C Runtime 2.0". GitHub. Note: Microsoft's WinObjC project contains a friendly fork of this library that includes a work around for the incremental linking issue.

외부 링크