JRuby İmplementasyonu

Bunjo

Uzman üye
14 Ara 2020
1,592
1,889
I Won
Merhaba ben Bunjo, bu konuda "JRuby" hakkında bir anlatı yapacağım. "JRuby", Java platformunda çalışan bir Ruby uygulamasıdır. Ruby programlama dilini Java sanal makinesi (JVM) üzerinde çalıştırmak için tasarlanmıştır. Bu, Ruby kodunun Java'nın güçlü ekosisteminden faydalanmasını sağlar. JRuby, Ruby programlarını Java uygulamalarıyla entegre etmek ve Java kütüphanelerini kullanmak için bir yol sağlar.



JRuby'nin bazı özellikleri şunlardır:

Java Entegrasyonu: JRuby, Java sınıflarını Ruby koduyla kullanmaya ve aynı zamanda Ruby kodunu Java uygulamalarına entegre etmeye olanak tanır. Bu, Java ve Ruby kodlarının bir arada çalışmasını sağlar.
Performans: JRuby, Java Sanal Makinesi'nin (JVM) performans avantajlarından faydalanır. Bu, JRuby kodunun genellikle C Ruby'den (MRI - Matz's Ruby Interpreter) daha hızlı çalışmasını sağlar.
Çoklu Platform Desteği: JRuby, JVM üzerinde çalıştığı için platform bağımsızdır. Aynı JRuby kodu, farklı işletim sistemlerinde ve donanım mimarilerinde çalışabilir.
Java Kütüphaneleri: JRuby, Java diline ait kütüphaneleri kullanabilir. Bu, geniş bir Java ekosistemi ile entegrasyon sağlar.
Paralel Programlama: JRuby, Java'nın paralel programlama yeteneklerini kullanarak çoklu iş parçacıklı programlamayı destekler.

Gelin birkaç örnek yazalım.

JRuby ile "TCP/Socket Server":

Ruby:
require 'java'

java_import 'java.net.ServerSocket'
java_import 'java.net.Socket'
java_import 'java.io.BufferedReader'
java_import 'java.io.InputStreamReader'
java_import 'java.io.PrintWriter'

class RubySocketServer
  def initialize(port)
    @server_socket = ServerSocket.new(port)
  end

  def start
    puts "Server listening on port #{@server_socket.local_port}"

    loop do
      client_socket = @server_socket.accept
      handle_client(client_socket)
    end
  end

  def handle_client(client_socket)
    puts "Client connected: #{client_socket.remote_socket_address}"

    reader = BufferedReader.new(InputStreamReader.new(client_socket.input_stream))
    writer = PrintWriter.new(client_socket.output_stream, true)

    writer.println('Welcome to the JRuby Socket Server!')

    loop do
      message = reader.readline
      break if message.nil? || message.empty?

      puts "Received from client: #{message}"
      writer.println("Server echoing: #{message}")
    end

    puts "Client disconnected: #{client_socket.remote_socket_address}"

    client_socket.close
  end
end

port = 12345
server = RubySocketServer.new(port)
server.start

JRuby ile Threading:

Ruby:
require 'java'

java_import 'java.lang.Thread'

class ParallelThread < Thread
  def initialize(thread_number)
    @thread_number = thread_number
    super()
  end

  def run
    10.times do |i|
      puts "Thread #{@thread_number} - Count: #{i}"
      sleep(rand(2))
    end
  end
end

threads = []

5.times do |i|
  thread = ParallelThread.new(i + 1)
  threads << thread
  thread.start
end

threads.each(&:join)
puts "Tüm thread'ler tamamlandı."

JRuby ile Banner Grabber:

Ruby:
require 'java'

java_import 'java.net.HttpURLConnection'
java_import 'java.net.URL'
java_import 'java.io.BufferedReader'
java_import 'java.io.InputStreamReader'

class JavaWebBannerGrabber
  def initialize(url)
    @url = url
  end

  def grab_banner
    url = URL.new(@url)
    connection = url.openConnection

    puts "URL: #{@url}"
    puts "Status: #{connection.response_code} #{connection.response_message}"
    puts "Server: #{connection.header_fields['Server'].first}" if connection.header_fields['Server']
    puts "Date: #{connection.header_fields['Date'].first}" if connection.header_fields['Date']
    puts "Content-Type: #{connection.header_fields['Content-Type'].first}" if connection.header_fields['Content-Type']
    input_stream = connection.input_stream
    reader = BufferedReader.new(InputStreamReader.new(input_stream))
    line = reader.readLine

    puts "Response Body:"
    while line
      puts line
      line = reader.readLine
    end
  rescue StandardError => e
    puts "Hata oluştu: #{e.message}"
  ensure
    input_stream.close if input_stream
  end
end

url = 'http://baban.com'
banner_grabber = JavaWebBannerGrabber.new(url)
banner_grabber.grab_banner

JRuby benimde öğrenme sürecinde olduğum bir implementasyon olduğu için bu konuda anlatacaklarım bu kadardı :)
 

admin44

Katılımcı Üye
6 Kas 2023
453
139
TÜRKİYE
Merhaba ben Bunjo, bu konuda "JRuby" hakkında bir anlatı yapacağım. "JRuby", Java platformunda çalışan bir Ruby uygulamasıdır. Ruby programlama dilini Java sanal makinesi (JVM) üzerinde çalıştırmak için tasarlanmıştır. Bu, Ruby kodunun Java'nın güçlü ekosisteminden faydalanmasını sağlar. JRuby, Ruby programlarını Java uygulamalarıyla entegre etmek ve Java kütüphanelerini kullanmak için bir yol sağlar.



JRuby'nin bazı özellikleri şunlardır:

Java Entegrasyonu: JRuby, Java sınıflarını Ruby koduyla kullanmaya ve aynı zamanda Ruby kodunu Java uygulamalarına entegre etmeye olanak tanır. Bu, Java ve Ruby kodlarının bir arada çalışmasını sağlar.
Performans: JRuby, Java Sanal Makinesi'nin (JVM) performans avantajlarından faydalanır. Bu, JRuby kodunun genellikle C Ruby'den (MRI - Matz's Ruby Interpreter) daha hızlı çalışmasını sağlar.
Çoklu Platform Desteği: JRuby, JVM üzerinde çalıştığı için platform bağımsızdır. Aynı JRuby kodu, farklı işletim sistemlerinde ve donanım mimarilerinde çalışabilir.
Java Kütüphaneleri: JRuby, Java diline ait kütüphaneleri kullanabilir. Bu, geniş bir Java ekosistemi ile entegrasyon sağlar.
Paralel Programlama: JRuby, Java'nın paralel programlama yeteneklerini kullanarak çoklu iş parçacıklı programlamayı destekler.

Gelin birkaç örnek yazalım.

JRuby ile "TCP/Socket Server":

Ruby:
require 'java'

java_import 'java.net.ServerSocket'
java_import 'java.net.Socket'
java_import 'java.io.BufferedReader'
java_import 'java.io.InputStreamReader'
java_import 'java.io.PrintWriter'

class RubySocketServer
  def initialize(port)
    @server_socket = ServerSocket.new(port)
  end

  def start
    puts "Server listening on port #{@server_socket.local_port}"

    loop do
      client_socket = @server_socket.accept
      handle_client(client_socket)
    end
  end

  def handle_client(client_socket)
    puts "Client connected: #{client_socket.remote_socket_address}"

    reader = BufferedReader.new(InputStreamReader.new(client_socket.input_stream))
    writer = PrintWriter.new(client_socket.output_stream, true)

    writer.println('Welcome to the JRuby Socket Server!')

    loop do
      message = reader.readline
      break if message.nil? || message.empty?

      puts "Received from client: #{message}"
      writer.println("Server echoing: #{message}")
    end

    puts "Client disconnected: #{client_socket.remote_socket_address}"

    client_socket.close
  end
end

port = 12345
server = RubySocketServer.new(port)
server.start

JRuby ile Threading:

Ruby:
require 'java'

java_import 'java.lang.Thread'

class ParallelThread < Thread
  def initialize(thread_number)
    @thread_number = thread_number
    super()
  end

  def run
    10.times do |i|
      puts "Thread #{@thread_number} - Count: #{i}"
      sleep(rand(2))
    end
  end
end

threads = []

5.times do |i|
  thread = ParallelThread.new(i + 1)
  threads << thread
  thread.start
end

threads.each(&:join)
puts "Tüm thread'ler tamamlandı."

JRuby ile Banner Grabber:

Ruby:
require 'java'

java_import 'java.net.HttpURLConnection'
java_import 'java.net.URL'
java_import 'java.io.BufferedReader'
java_import 'java.io.InputStreamReader'

class JavaWebBannerGrabber
  def initialize(url)
    @url = url
  end

  def grab_banner
    url = URL.new(@url)
    connection = url.openConnection

    puts "URL: #{@url}"
    puts "Status: #{connection.response_code} #{connection.response_message}"
    puts "Server: #{connection.header_fields['Server'].first}" if connection.header_fields['Server']
    puts "Date: #{connection.header_fields['Date'].first}" if connection.header_fields['Date']
    puts "Content-Type: #{connection.header_fields['Content-Type'].first}" if connection.header_fields['Content-Type']
    input_stream = connection.input_stream
    reader = BufferedReader.new(InputStreamReader.new(input_stream))
    line = reader.readLine

    puts "Response Body:"
    while line
      puts line
      line = reader.readLine
    end
  rescue StandardError => e
    puts "Hata oluştu: #{e.message}"
  ensure
    input_stream.close if input_stream
  end
end

url = 'http://baban.com'
banner_grabber = JavaWebBannerGrabber.new(url)
banner_grabber.grab_banner

JRuby benimde öğrenme sürecinde olduğum bir implementasyon olduğu için bu konuda anlatacaklarım bu kadardı :)
elinize sağlık hocam niye beni sunucudan attınız neyim dokundu size😅
 

invisible blood

Uzman üye
15 Eyl 2023
1,177
443
Merhaba ben Bunjo, bu konuda "JRuby" hakkında bir anlatı yapacağım. "JRuby", Java platformunda çalışan bir Ruby uygulamasıdır. Ruby programlama dilini Java sanal makinesi (JVM) üzerinde çalıştırmak için tasarlanmıştır. Bu, Ruby kodunun Java'nın güçlü ekosisteminden faydalanmasını sağlar. JRuby, Ruby programlarını Java uygulamalarıyla entegre etmek ve Java kütüphanelerini kullanmak için bir yol sağlar.



JRuby'nin bazı özellikleri şunlardır:

Java Entegrasyonu: JRuby, Java sınıflarını Ruby koduyla kullanmaya ve aynı zamanda Ruby kodunu Java uygulamalarına entegre etmeye olanak tanır. Bu, Java ve Ruby kodlarının bir arada çalışmasını sağlar.
Performans: JRuby, Java Sanal Makinesi'nin (JVM) performans avantajlarından faydalanır. Bu, JRuby kodunun genellikle C Ruby'den (MRI - Matz's Ruby Interpreter) daha hızlı çalışmasını sağlar.
Çoklu Platform Desteği: JRuby, JVM üzerinde çalıştığı için platform bağımsızdır. Aynı JRuby kodu, farklı işletim sistemlerinde ve donanım mimarilerinde çalışabilir.
Java Kütüphaneleri: JRuby, Java diline ait kütüphaneleri kullanabilir. Bu, geniş bir Java ekosistemi ile entegrasyon sağlar.
Paralel Programlama: JRuby, Java'nın paralel programlama yeteneklerini kullanarak çoklu iş parçacıklı programlamayı destekler.

Gelin birkaç örnek yazalım.

JRuby ile "TCP/Socket Server":

Ruby:
require 'java'

java_import 'java.net.ServerSocket'
java_import 'java.net.Socket'
java_import 'java.io.BufferedReader'
java_import 'java.io.InputStreamReader'
java_import 'java.io.PrintWriter'

class RubySocketServer
  def initialize(port)
    @server_socket = ServerSocket.new(port)
  end

  def start
    puts "Server listening on port #{@server_socket.local_port}"

    loop do
      client_socket = @server_socket.accept
      handle_client(client_socket)
    end
  end

  def handle_client(client_socket)
    puts "Client connected: #{client_socket.remote_socket_address}"

    reader = BufferedReader.new(InputStreamReader.new(client_socket.input_stream))
    writer = PrintWriter.new(client_socket.output_stream, true)

    writer.println('Welcome to the JRuby Socket Server!')

    loop do
      message = reader.readline
      break if message.nil? || message.empty?

      puts "Received from client: #{message}"
      writer.println("Server echoing: #{message}")
    end

    puts "Client disconnected: #{client_socket.remote_socket_address}"

    client_socket.close
  end
end

port = 12345
server = RubySocketServer.new(port)
server.start

JRuby ile Threading:

Ruby:
require 'java'

java_import 'java.lang.Thread'

class ParallelThread < Thread
  def initialize(thread_number)
    @thread_number = thread_number
    super()
  end

  def run
    10.times do |i|
      puts "Thread #{@thread_number} - Count: #{i}"
      sleep(rand(2))
    end
  end
end

threads = []

5.times do |i|
  thread = ParallelThread.new(i + 1)
  threads << thread
  thread.start
end

threads.each(&:join)
puts "Tüm thread'ler tamamlandı."

JRuby ile Banner Grabber:

Ruby:
require 'java'

java_import 'java.net.HttpURLConnection'
java_import 'java.net.URL'
java_import 'java.io.BufferedReader'
java_import 'java.io.InputStreamReader'

class JavaWebBannerGrabber
  def initialize(url)
    @url = url
  end

  def grab_banner
    url = URL.new(@url)
    connection = url.openConnection

    puts "URL: #{@url}"
    puts "Status: #{connection.response_code} #{connection.response_message}"
    puts "Server: #{connection.header_fields['Server'].first}" if connection.header_fields['Server']
    puts "Date: #{connection.header_fields['Date'].first}" if connection.header_fields['Date']
    puts "Content-Type: #{connection.header_fields['Content-Type'].first}" if connection.header_fields['Content-Type']
    input_stream = connection.input_stream
    reader = BufferedReader.new(InputStreamReader.new(input_stream))
    line = reader.readLine

    puts "Response Body:"
    while line
      puts line
      line = reader.readLine
    end
  rescue StandardError => e
    puts "Hata oluştu: #{e.message}"
  ensure
    input_stream.close if input_stream
  end
end

url = 'http://baban.com'
banner_grabber = JavaWebBannerGrabber.new(url)
banner_grabber.grab_banner

JRuby benimde öğrenme sürecinde olduğum bir implementasyon olduğu için bu konuda anlatacaklarım bu kadardı :)
Ellerinize sağlık hocam.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.