2012-02-02 32 views
8

bất kỳ ai đã thử nghiệm về cách chạy mô-đun node.js hoặc tập lệnh từ java hoặc groovy?Chạy nút-js từ Java hoặc Groovy

Có thể groovy command.execute() làm điều đó? Nếu vậy thì nó sẽ hoạt động giống nhau trên các hệ thống op khác nhau.

Đáng chú ý là lý tưởng, tôi muốn rằng node.js sẽ không được phụ thuộc khi cài đặt trong lệnh hệ thống và nút, nhưng được đóng gói qua ./configure và thực hiện để nó có thể được sử dụng làm thư viện. .

Cảm ơn

Edit: Về cơ bản tôi muốn điều này vì vậy mà tôi có thể sử dụng mô-đun Node.js, một khung phía khách hàng (cà phê kịch bản, ngọc bích, bút vv Và điều này được bundeled trong Brunch), như một Grails plugin. Vì vậy, các plugin là khép kín mà không có sự phụ thuộc hệ thống.

+2

Tôi không hiểu tại sao mọi người lại muốn chạy nodej từ java, .net? Đầu tiên đọc những gì nodejs làm và giải quyết. – Prashanth

+1

Tôi không biết bạn đang đề cập đến ai khác, nhưng trong trường hợp này, Jor muốn node.js nhất quán trên nhiều nền tảng. Tôi đã đoán ra điều này khi đọc câu hỏi của anh ấy. – Nicholas

+0

Giả sử bạn có một ứng dụng Grails lớn và một thư viện nodejs lớn mà bạn cần - cả với nhiều năm làm việc thực hiện các API khác nhau. Sau đó, bạn cần phải chạy nodejs từ java. –

Trả lời

9

Bạn có thể tìm thấy những gì bạn đang tìm kiếm trong vert.x.

Từ trang web:

vert.x là gì?

Khung ứng dụng không đồng bộ thế hệ tiếp theo. (Trước đây gọi là nút.x)

  • Chạy trên JVM.
  • Sử dụng các bit tốt của khung điều khiển sự kiện như node.js, sau đó thêm một số bit thậm chí còn hấp dẫn hơn.
  • Mọi thứ đều không bị chặn.
  • Polyglot. vert.x sẽ có thể sử dụng được từ nhiều ngôn ngữ: Ruby, Groovy, Java, JavaScript, Python, Clojure, Scala. Hiện tại chúng tôi hỗ trợ Java và Ruby và có hỗ trợ Groovy một phần. Viết mã của bạn bằng ngôn ngữ bạn chọn. Tận dụng sức mạnh của vert.x từ ngôn ngữ đó.
  • Đi với những phát triển gần đây với InvokeDynamic trong Java 7 và đặt cược trên JVM là thời gian chạy hàng đầu trong tương lai cho các ngôn ngữ động.
  • Cho phép bạn tạo các máy chủ hoặc máy khách mạng cực kỳ dễ dàng.
  • Khả năng mở rộng thực sự. Không giống như các khung công tác hướng sự kiện nổi tiếng khác, bạn có thể có nhiều vòng lặp sự kiện cho mỗi quá trình. Không kéo dài hơn 32 trường hợp chỉ để sử dụng các lõi trên máy chủ của bạn.
  • Mô hình đồng thời cực kỳ đơn giản. Viết mã của bạn dưới dạng chuỗi đơn nhưng xem nó mở rộng trên nhiều lõi. Không cần phải lo lắng về điều kiện chủng tộc hoặc ổ khóa.
  • Hiểu nhiều giao thức mạng ngoài hộp bao gồm: TCP, SSL, HTTP, HTTPS, Websockets.
  • Phân phối hiệu quả các tệp tĩnh từ hệ thống tệp bỏ qua hoàn toàn không gian người dùng.
  • Định tuyến web dựa trên tài nguyên phong cách Sinatra/Express đơn giản.
  • Xe buýt sự kiện được phân phối. Nhiều trường hợp vert.x làm việc với nhau liền mạch để cung cấp một chiếc xe buýt trường hợp phân phối
  • SockJS hỗ trợ
3

Vâng, bạn có thể chỉ command.execute()

Một cách thanh lịch hơn có thể là để xây dựng một nút nhỏ .js server chỉ chấp nhận các yêu cầu từ localhost.Nhưng công cụ tìm kiếm này hoạt động:

def file = new File("script.js") 
    def fileStream = file.newOutputStream() 
    fileStream << "console.log('hello from node.js');" 
    fileStream.close() 

    def command = "/usr/local/bin/node " + file.absolutePath 
    def proc = command.execute() 
    proc.waitFor() 

    println "return code: ${ proc.exitValue()}" 
    println "stderr: ${proc.err.text}" 
    println "stdout: ${proc.in.text}" 
Các vấn đề liên quan