네티즌 코아란트가 쓴 입문서입니다. (다운로드하려면 로그인하세요.) Ruby 언어, Rails 설치 및 간단한 예를 소개합니다. 초보자에게 매우 유용합니다. 적극 추천합니다!
Java 프로그래머로서 j2ee 개발에 참여하고 있다면 분명히 많은 애플리케이션 프레임워크를 사용하게 될 것입니다. Java 언어 커뮤니티만큼 활발한 언어는 없으며 새로운 프로그래밍 개념은 곧 인터넷에서 해당 오픈 소스 구현을 갖게 될 것입니다. 가장 일반적으로 사용되는 웹 사이트 개발 모델 MVC에 해당하며 각 계층에는 Struts 및 Tapestry가 컨트롤러 계층(C)에 속하고 Velocity 프레임워크는 뷰 계층(V)에 속합니다. Hibernate, iBatis, OJB 또는 JPOX와 같은 JDO의 많은 오픈 소스 구현 중 하나가 될 수 있습니다. 그러나 선택 사항이 너무 많다고 반드시 좋은 것은 아니며, 모든 사람이 올바른 일을 하기 위해 올바른 프레임워크를 채택할 수 있는 것은 아닙니다. 개발 플랫폼이 .net이면 이러한 상황을 피할 수 있습니다. 일반적으로 Visual Studio .net을 개발 도구로 설치한 다음 MSDN을 설치하면 정보를 찾을 수 있습니다. 프로그램 개발자에게 이는 매우 어려운 상황입니다. 저는 개인적으로 Java를 매우 좋아합니다. 학습이든 연습이든 우리에게 많은 것을 제공합니다. 그런데 왜 .net과 같은 "원스톱" 솔루션이 여러 번 옳다고 생각합니까?
Java 프로그래머로서 저는 Java의 가장 분명한 문제 중 일부가 무엇보다도 Java가 너무 복잡하고, 두 번째로 Java가 사용자 지향이 아닌 너무 프로그래머 지향적이라는 점이라고 생각합니다. C++에 비해 Java는 이미 매우 간단합니다. 이제 Java 프로그래머가 너무 많다는 사실이 이 점을 보여줍니다. 하지만 누군가 말했듯이 "리눅스에서는 누가 마스터인지 쉽게 알 수 있다"고 하지만, 자바 분야에서는 그렇지 않습니다. 내 주변의 동료들은 여전히 매우 낮은 수준의 개념적 실수를 저지르고 있는 것을 종종 발견합니다. 그들은 인터페이스, 추상 클래스 및 서블릿이 무엇인지 정확하게 구별하지 못하더라도 수년 동안 여전히 j2ee 개발에 참여할 수 있습니다. 그런데 왜 Java가 복잡하다고 하는 이유는 한 가지 일을 수행하는 데 너무 많은 기술이 필요하기 때문입니다. 그렇다면 개념이 매우 명확하지 않은 프로그래머의 경우 올바른 선택을 하도록 어떻게 보장할 수 있습니까? 그리고 얼마나 많은 프레임워크가 "원스톱" 서비스를 제공합니까? 최근 등장한 Spring 프레임워크는 많은 프레임워크 중에서 가장 많은 서비스를 제공하지만 새로운 문제가 있습니다. 즉, 여전히 사용자가 아닌 프로그래머에게 너무 지향적이라는 점입니다. 왜 그런 말을 합니까? 프레임워크는 원래 프로그래머를 위해 설계됐는데, 그렇지 않나요? Spring은 많은 선택권을 제공하지만(충분하지 않고 ORM 자체가 없음) 이를 사용하는 간단한 방법을 제공하지 않으므로 프로그래머를 위한 것이라고만 말할 수 있습니다. 대부분의 Java 프레임워크에는 이 문제가 있습니다. 즉, 학습 곡선이 상대적으로 높습니다. 저는 학습 곡선의 수준이 프레임워크가 프로그래머를 위한 것인지 사용자를 위한 것인지 구별하는 열쇠라고 생각합니다. 이는 주로 프레임워크의 사용 용이성에 반영됩니다. 실제로 프레임워크의 최종 사용자는 프로그래머입니다. "사용자"와 "프로그래머"를 구분하는 이유는 일부 "프로그래머"용 프레임워크는 많은 양의 인프라와 부품을 제공하지만 사용하기 어렵기 때문입니다. 여전히 프로그래머가 직접 조립해야 합니다. "사용자" 지향 프레임워크는 더 간단합니다. 사용자는 이를 사용하기 위해 지침을 따르기만 하면 됩니다. Ruby on Rails가 Java 커뮤니티에 센세이션을 일으킬 이유는 Java 프레임워크에는 부족한 "원스톱" 사용자 중심의 간단하고 사용하기 쉬운 프레임워크를 제공하기 때문이라고 생각합니다. Ruby on Rails가 이를 수행할 수 있는 이유는 무엇입니까? Java 자체가 이를 수행할 수 없는 것은 아닌가요? 사실 많은 Java 프레임워크 디자이너는 이를 수행하지 않습니다. 그들의 생각은 좋은 프레임워크를 디자인하기 위해 패턴을 사용하는 방법에만 국한되어 있으며 프레임워크의 사용 편의성에 대해 더 많은 작업을 수행하지 않았을 수 있습니다. Spring을 사용해 본 사람이라면 누구나 Spring의 xml 구성 파일이 점진적으로 확장될 것이라는 것을 알고 있지만, 이 문제를 해결하기 위해 쉽게 더 작은 구성 파일로 나눌 수 있습니다. 그러나 xml 구성 파일을 사용할 때는 Java 프로그래밍의 관례적인 개념을 따릅니다. "Java는 최고의 프로그래밍 언어이고 XML은 데이터를 설명하는 데 가장 적합한 언어이며 이 둘의 조합이 가장 완벽합니다. 응용 프로그램이 사용하지 않는 경우 xml로 설명한다면 좋은 Java 애플리케이션이 아닙니다."
그러나 Ruby on Railils가 많은 Java 프레임워크와 구별되고 프레임워크의 사용 편의성 측면에서 획기적인 성과를 거둔 것은 바로 이 점입니다. 이 아이디어는 Rails의 전체 디자인, 즉 구성보다 관례를 통해 실행됩니다. 예를 들어, Java 웹 애플리케이션을 작성할 때 일반적으로 MVC에 따라 해당 클래스를 구분합니다. 저는 개인적으로 Controller 클래스를 웹 디렉토리에, View 클래스를 뷰 디렉토리에, 모델 클래스를 도메인 디렉토리에 두는 것을 좋아합니다. . 하지만 사람마다 설정과 이름이 다릅니다. 프레임워크에 이러한 다양한 디렉터리를 알리는 방법은 Java 프레임워크에 대한 유일한 솔루션은 xml 구성 파일을 통해 이 정보를 알리는 것입니다. Rails의 솔루션은 다음과 같습니다. 내가 디렉토리 구조를 정의하면 사용자는 내가 정의한 디렉토리에 항목을 넣으면 됩니다. 이는 레일에 구성 파일이 거의 없는(그러나 전혀 없는 것은 아님) 중요한 이유입니다. 아이디어는 매우 간단하지만 그것이 가져오는 이점은 Rails의 개발 효율성이 Java 개발의 10배라는 것입니다. ) . 그렇다면 이것만으로도 Java를 사용하는 것보다 레일 개발이 더 빨라지나요? 전적으로 그런 것은 아닙니다. 이는 레일의 또 다른 설계 철학인 코드 감소의 이점도 있기 때문입니다. Rails는 디자인 언어인 Ruby 덕분에 이를 완벽하게 달성할 수 있는 언어는 없습니다. Ruby를 사용하면 실제로 다른 언어에서는 불가능한 많은 기능을 적은 양의 언어로 작성할 수 있습니다. Rails를 마스터하려면 Ruby를 이해해야 합니다. 누군가가 말한 적이 있습니다: Zope(유명한 Python 웹 프레임워크)는 Python의 킬러 애플리케이션이고 Python은 zope의 비밀 무기입니다. 레일스와 루비의 관계를 설명하는데는 이 문장이 가장 적절하다고 생각합니다.