2010-04-11 29 views
7

Chúng tôi muốn viết lại chương trình phụ trợ kodingen.com với Go hiện tại là Java, chạy dưới dạng daemon sử dụng jsvc.Chuyển ứng dụng Java sang Go - bất kỳ lời khuyên nào?

Tôi chưa bao giờ chạm vào bất kỳ C trong cuộc sống của tôi, tôi chỉ có kinh nghiệm trong Java vì vậy tôi không biết nếu điều này là một cái gì đó mà tôi thậm chí sẽ bắt đầu.

Tuy nhiên, nhiệm vụ này là khá đơn giản

  • lệnh đọc vỏ từ cơ sở dữ liệu mysql
  • hàng đợi và thực hiện chúng song song
  • tiết kiệm mỗi đầu ra vỏ đến cơ sở dữ liệu

đó là nó. Vì vậy, những yêu cầu đơn giản này cho tôi hy vọng rằng tôi có thể bắt đầu bằng ngôn ngữ tuyệt vời này.

Bạn sẽ tư vấn cho điều gì? C có còn tốt hơn không?

+3

Xin chào các bạn, những người tôi đã nghe nói về TWIST? Dù sao, chỉ tò mò: có gì sai với Java? Và tại sao Go? Chỉ tò mò thôi. – cletus

+1

Vâng tôi là người đã bị đánh đập :) Nhưng chúng tôi đã đến OAF ở top5 ở New York ngay sau đó, Jason và Tyler rất tuyệt. Dù sao, lý do là JVM ăn 1,2 GB ram những gì nếu không sẽ là 100k C daemon. Có rất nhiều lý do khác như đâm ngẫu nhiên do apache exec commons vv Nếu bạn có một giải pháp thay thế xin vui lòng chia sẻ ở đây hoặc u có thể mail cho tôi cũng .. – Devrim

+2

Ngoài ra, tại sao Go và không C? Bởi vì, xem cuộc nói chuyện công nghệ của Go, Rob Pike bao gồm tất cả những lý do tại sao tôi chưa bao giờ chạm vào C và nói rằng ông đã loại bỏ chúng. và thêm vào tất cả những điều tôi muốn ở đó bằng ngôn ngữ hệ thống, anh ấy nói anh ấy đã thêm chúng. – Devrim

Trả lời

3

Tôi thích Go rất nhiều và đã đóng góp cho dự án. Tuy nhiên, tôi nghĩ bạn nên cân nhắc một vài điều về Go trước khi giải quyết nó.

  • Đi vẫn là ngôn ngữ không ổn định. Cú pháp, tính năng và gói của nó đều có thể thay đổi. Hãy chắc chắn rằng bạn đã sẵn sàng để theo kịp với điều này nếu bạn chọn để sử dụng nó.
  • Bộ sưu tập rác của Go vẫn chưa trưởng thành. Việc sử dụng bộ nhớ của bạn nên tốt hơn 1.2 GB, nhưng có thể nó sẽ không giúp bạn đạt tới mức C.
  • Không có hỗ trợ cốt lõi cho MySQL (hoặc bất kỳ cơ sở dữ liệu nào khác). Có một số dự án gói MySQL không chính thức. Những cập nhật mới nhất là GoMySQLGo-MySQL-Client-Library. Tôi không biết gì về họ hoàn toàn hay ổn định như thế nào.

Đối với xếp hàng và thực thi song song, tôi nghĩ đó là thứ mà Go sẽ có thể làm khá tốt. Có thể bạn sẽ sử dụng gói exec để thực thi và song song với goroutines.

1

Tôi đồng ý với @Chickencha

Tại thời điểm này, tôi không có kế hoạch cập nhật của tôi [1]: http://github.com/chbfiv/libmysqlgo "libmysqlgo" dự án. Đóng góp được chào đón, nhưng tôi quá bận rộn. Tôi khuyên bạn nên sử dụng các dự án mysql hoạt động tích cực hơn.

1

Từ đường đi langugage FAQ:

Dự án Go đã được hình thành để làm cho nó dễ dàng hơn để viết các loại máy chủ và phần mềm khác của Google sử dụng nội bộ, nhưng việc thực hiện không phải là khá trưởng thành đủ cho sử dụng sản xuất quy mô lớn.

Như tôi biết, trình thu thập và bộ thu thập rác của Go chưa sẵn sàng. Và trình biên dịch của nó không được tối ưu hóa đủ, dù sao, trình biên dịch C đã được cải thiện trong 20 năm. Nếu bạn muốn sử dụng nó trong một trang web sản xuất, chờ đợi cho Go đủ trưởng thành là tốt hơn.

Nhưng điều đó không có nghĩa Go không phải là ngôn ngữ tốt để tìm hiểu. Thực ra, tôi rất vui khi sử dụng nó để phát triển một số tiện ích hữu ích.

EDIT: Trước khi bạn chuyển sang ngôn ngữ khác, cách thực hiện một số thử nghiệm với JDK sắp tới 7. Có một số cải tiến trong việc thu thập rác. Bạn có thể kiểm tra là quản lý bộ nhớ tốt hơn trong trường hợp của bạn.

+0

Cảm ơn Stephen, JDK7 có vẻ tốt nhưng những gì chúng tôi cần là một daemon Linux không phải là một chương trình chạy trong môi trường đóng (jvm) và giao diện với hệ thống thông qua một số ẩn số. Để minh họa quan điểm của tôi, hãy tưởng tượng nó sẽ vô lý như thế nào nếu apache được viết bằng Java. – Devrim

1

Tôi nghĩ rằng với việc bổ sung gần đây của hoảng loạn/phục hồi, Go đang bắt đầu trở thành một lựa chọn khả thi cho các chương trình phụ trợ trang web. Tôi đã chạy một vài ứng dụng facebook đơn giản bằng cách sử dụng Go, nhưng nó bực bội có toàn bộ ứng dụng đi xuống cho một cái gì đó giống như một lỗi khóa bản đồ, hoặc một ngoại lệ con trỏ null. Với sự hoảng sợ/phục hồi, nó sẽ có thể quản lý các sự cố.

Giới thiệu về các yêu cầu của bạn - sẽ tốt cho các lệnh mysql và shell. Nhưng hãy chuẩn bị để vá một số thư viện :)

Các vấn đề liên quan