JRuby is an implementation of the Ruby language that runs on the Java Virtual Machine. It allows Ruby code to access Java libraries and APIs and Java code to call Ruby methods. Some benefits of JRuby include access to mature and stable Java platforms, libraries, and tools as well as improved performance from features like garbage collection. JRuby also allows Java shops to introduce scripting and Ruby skills.
Finally Java SE 7 is GA and you can start using it. This talk will cover the most important new features of the language and the virtual machine. It will also cover some features that did not make it in to the SE 7 release. Finally we will discuss current state of Java as an ecosystem and my analysis and hopes for the future.
My goals have been:
- focusing on several project areas, where you can use jruby successfully
- share the experience that I made using ruby in the last years
- proove that things can be done easier as they are done in typical java projects
Finally Java SE 7 is GA and you can start using it. This talk will cover the most important new features of the language and the virtual machine. It will also cover some features that did not make it in to the SE 7 release. Finally we will discuss current state of Java as an ecosystem and my analysis and hopes for the future.
My goals have been:
- focusing on several project areas, where you can use jruby successfully
- share the experience that I made using ruby in the last years
- proove that things can be done easier as they are done in typical java projects
Cooking Perl with Chef: Real World Tutorial with JitterbugDavid Golden
This tutorial provides a command-by-command walk-through for deploying the Jitterbug continuous integration application using the Chef configuration management tool
PECL Picks - Extensions to make your life betterZendCon
One of the biggest strengths of PHP is its "glue" power. Take any C library and with a little magic and a compiler you have a fantastic extension. These extensions hide in PECL, but few people can tell the good from the unmaintained or just plain broken. Find the best extensions for your project, learn about PECL, and find out how to become a part of the PECL developer community.
In Web hosting services, hosting systems use access controls like suEXEC on apache Web servers to separate privilege by each virtual host. However, existing access control architectures on Web servers have a problem in their low performance and are not appropriate for dynamic contents like Web API since these architectures require termination of the process after each HTTP session. The system developers are not easy to install existing access controls since these are provided by each interpreter and program execution methods conventionally. In this paper, we propose the access control architecture “mod_process_security”. In this architecture a server process creates a new thread on the server process when accepting a request. Then, the web server separates privilege by the thread and processes the contents on the thread. The server process installed “mod_process_security” executes programs faster. System developers can easily install it on web servers since we replace it with the complicated existing access controls. “mod_process_security” can be installed for Apache HTTP Server on Linux as Apache Module which is widely used.
Slides containing information about my favorite features of the Ruby language. Many of these features exist in other languages, but in the context of my experience as a C, C++, and Java developer, offer a dramatic increase in expressiveness and productivity.
This slide show can also be used to teach a Ruby overview.
We looked at the data. Here’s a breakdown of some key statistics about the nation’s incoming presidents’ addresses, how long they spoke, how well, and more.
Cooking Perl with Chef: Real World Tutorial with JitterbugDavid Golden
This tutorial provides a command-by-command walk-through for deploying the Jitterbug continuous integration application using the Chef configuration management tool
PECL Picks - Extensions to make your life betterZendCon
One of the biggest strengths of PHP is its "glue" power. Take any C library and with a little magic and a compiler you have a fantastic extension. These extensions hide in PECL, but few people can tell the good from the unmaintained or just plain broken. Find the best extensions for your project, learn about PECL, and find out how to become a part of the PECL developer community.
In Web hosting services, hosting systems use access controls like suEXEC on apache Web servers to separate privilege by each virtual host. However, existing access control architectures on Web servers have a problem in their low performance and are not appropriate for dynamic contents like Web API since these architectures require termination of the process after each HTTP session. The system developers are not easy to install existing access controls since these are provided by each interpreter and program execution methods conventionally. In this paper, we propose the access control architecture “mod_process_security”. In this architecture a server process creates a new thread on the server process when accepting a request. Then, the web server separates privilege by the thread and processes the contents on the thread. The server process installed “mod_process_security” executes programs faster. System developers can easily install it on web servers since we replace it with the complicated existing access controls. “mod_process_security” can be installed for Apache HTTP Server on Linux as Apache Module which is widely used.
Slides containing information about my favorite features of the Ruby language. Many of these features exist in other languages, but in the context of my experience as a C, C++, and Java developer, offer a dramatic increase in expressiveness and productivity.
This slide show can also be used to teach a Ruby overview.
We looked at the data. Here’s a breakdown of some key statistics about the nation’s incoming presidents’ addresses, how long they spoke, how well, and more.
My books- Hacking Digital Learning Strategies http://hackingdls.com & Learning to Go https://gum.co/learn2go
Resources at http://shellyterrell.com/emoji
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
We asked LinkedIn members worldwide about their levels of interest in the latest wave of technology: whether they’re using wearables, and whether they intend to buy self-driving cars and VR headsets as they become available. We asked them too about their attitudes to technology and to the growing role of Artificial Intelligence (AI) in the devices that they use. The answers were fascinating – and in many cases, surprising.
This SlideShare explores the full results of this study, including detailed market-by-market breakdowns of intention levels for each technology – and how attitudes change with age, location and seniority level. If you’re marketing a tech brand – or planning to use VR and wearables to reach a professional audience – then these are insights you won’t want to miss.
Artificial intelligence (AI) is everywhere, promising self-driving cars, medical breakthroughs, and new ways of working. But how do you separate hype from reality? How can your company apply AI to solve real business problems?
Here’s what AI learnings your business should keep in mind for 2017.
Explains how to make use of ruby in java-based work environments. There are some hints at .NET equivalents along the way.
This is part 3 of a trilogy of Star Wars-themed ruby talks given at Protegra's SDEC 2011 in Winnipeg, Canada.
* История JRuby;
* Платформа JVM и ее возможности;
* Почему стоит попробовать JRuby;
* Как мы в Хот Спот используем JRuby для разработки;
* Сравнение с другими JVM языками.
This talk provides a number of step-by-step examples that illustrate different ways in which Rails applications can interact effectively with third-party Java libraries. The presentation shows how developers can leverage JRuby to augment Rails applications with the mature, third-party libraries that are widely available in the Java world.
This is the material for Tampere workshop on 14th May 2018.
How to combine modern technologies such as Java 10, Spring Boot 2, Docker, to create more lightweight and modern microservices - or any services you like.
The new GraalVM from Oracle supports multiple language including JavaScript, Python, Ruby, R, C++ as well as Java and other JVM languages. This opens up interesting possibilities for polygot enterprise applications. Now you can use a Node library in a Java application or call an R statistical function from an EJB. Previously, this type of integration was extremely challenging. This session will provide recipes to get up and running along with best practices and some cool demos.
Code: https://github.com/rcuprak/graalvm_jee
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
2. What is JRuby?
An implementation of the Ruby language on the Java
Virtual Machine:
• Open Source
• Main site at http://jruby.org/
• Source Code at https://github.com/jruby/jruby
• Matz writes C so we don't have to;
the JRuby team writes Java so we don't have to.
• Both1.8 and 1.9 compatible.
3. Non-Java Languages on the JVM
"The Java virtual machine knows nothing of the Java
programming language, only of a particular binary format,
the class file format."
- from http://java.sun.com/developer/technicalArticles/DynTypeLang/
•
JRuby
•
Scala
•
Clojure
•
Groovy
•
JavaScript
4. Technical Benefits of Running Ruby on the JVM
• mature and stable platform
• more portable – runs on older and obscure OS's that
have JVM's
• access to a huge number of libraries, e.g. XML, SOAP
• excellent performance, garbage collection, and
multithreading
• performance tuning and profiling tools (e.g. jvisualvm)
• excellent I18N (internationalization) support
• highly scalable
• can drive Java API's
5. Benefits of Ruby on the JVM
for Enterprise Java Shops
• all the technical benefits previously mentioned, plus:
• can use Ruby DB tools such as Active Record (esp. useful for
migrations), DBI, etc.
• can introduce development staff to scripting languages in
general, and Ruby in particular
• can automate one-off tasks that were previously too cost
prohibitive to automate
• can grow Ruby expertise that can be applied to various kinds of
tasks (e.g. testing, scripting, web development)
• can introduce it in a way that will not be distributed with
production code
• can use it for saner and more rapid development of Swing or
SWT client-side GUI apps (see JRuby as a Better Language for
the JVM - http://krbtech.wordpress.com/2009/02/26/jruby-a-
better-language-for-the-javavirtual-machine/
6. Benefits of Using JRuby for Ruby Developers
• all the technical benefits previously mentioned, plus:
• enables expanding customer base to include Java
shops, many of which are very large and well funded.
• enables creation of better solutions by increasing the
set of parts that can be assembled into a solution --
sometimes Java is better (e.g. XML, SOAP support).
8. Adding Ruby methods to Java Classes
require 'java'
java_import java.lang.System
class System
def self.properties_pp
s = ''
properties.sort.each do |k,v|
s << sprintf("%-34s %sn", k, v)
end
s
end
end
puts System.properties_pp
9. JRuby Method Generation
JRuby generates snake-cased named methods for Java
camel-case named methods, and conventional reader
and writer methods à la attr_accessor:
# The java.util.Locale class contains only getDefault and setDefault.
# JRuby adds the others:
jruby-1.6.5 :003 > puts Locale.methods.sort.grep /[Dd]efault/
default
default=
getDefault
get_default
setDefault
set_default
Also, JRuby makes the Enumerable interface available
to some kinds of Java objects, enabling the above, and
the following:
Locale.iSOCountries.each { |country_code| puts country_code }
Locale.iSOLanguages.each { |language_code| puts language_code }
10. JRuby to Java Type Conversions
jruby-1.6.5 :027 > 123.class
=> Fixnum
jruby-1.6.5 :028 > 123.to_java.class
=> Java::JavaLang::Long
11. Calling JRuby from Java
import org.jruby.embed.ScriptingContainer;
public class ScriptingContainerExample {
public static void main(String[] args) {
ScriptingContainer container = new ScriptingContainer();
container.put("$greeting", "Hello from JRuby!"); // optional
// container.setLoadPaths(aJavaListOfDirectories); // optional
container.setCompatVersion(org.jruby.CompatVersion.RUBY1_9); // optional
container.runScriptlet("puts $greeting");
}
}
// >javac -cp ".:$JRUBY_JAR" ScriptingContainerExample.java
// >java -cp ".:$JRUBY_JAR" ScriptingContainerExample
// Hello from JRuby!
12. Special Java Support Calls
• java_import - Imports java classes
• java_send - for specifying which function to call, by signature
• java_alias - for creating an alias for a Java function with signature
• java_method - for creating a callable reference to a Java function
with signature
• field_accessor - for accessing Java instance variables, even private
ones
• add_class_annotation - Adds a class annotation to a Ruby class
• become_java! - "promotes" a Ruby class to be a Java class
• include - can be used to signal that this class implements a Java
interface
13. Compiling JRuby
The JRuby distribution comes with jrubyc, a compiler that
can produce either Java class files, or Java source (run
jrubyc --help for details).
rvm jruby
echo "puts 'hello'" > hello.rb
jrubyc hello.rb
ls -l hello*
javap -v hello | less
Free code obfuscation: Since only the .class file is need to
run your app, you can withhold the source code from
your users and provide only the .class file.
The .class file can be decompiled, but will be difficult to
comprehend, since Java byte code is similar in concept to
assembler code.
14. Omitting the ‘J’ in JRuby
Normally, it is necessary to run JRuby commands (jruby,
jirb) with their distinctive names beginning with j.
rvm eliminates the need for this.
rvm jruby
which ruby
# /Users/kbennett/.rvm/rubies/jruby-1.6.5/bin/ruby
which jruby
# /Users/kbennett/.rvm/rubies/jruby-1.6.5/bin/jruby
ls -l /Users/kbennett/.rvm/rubies/jruby-1.6.5/bin
# lrwxr-xr-x 1 kbennett staff 5 Jan 19 13:25 ruby -> jruby
15. Defaulting to 1.9
Most people will want JRuby to run in 1.9 mode.
To automate this, ensure that the environment variable
JRUBY_OPTS will contain --1.9.
Most developers will accomplish this by inserting the
following line in their shell startup script
(e.g. .bashrc, .zshrc):
export JRUBY_OPTS=--1.9
This can be overridden by eliminating or replacing that
environment variable’s value:
JRUBY_OPTS= ruby ...
# or
export JRUBY_OPTS=
16. Nailgun
Nailgun is a tool packaged with JRuby that enables
sharing a single JRuby virtual machine instance by JRuby
scripts to eliminate the delay associated with JVM
startup.
# If $JRUBY_OPTS contains “--1.9” so that JRuby runs
# in 1.9 mode by default, then this must be overridden
# for the Nailgun server to start.
# See but at http://jira.codehaus.org/browse/JRUBY-5611.
# Start up the shared Nailgun server:
JRUBY_OPTS= jruby –ng-server
time ruby -e "puts 123"
#123
#ruby -e "puts 123" 2.89s user 0.14s system 217% cpu 1.390 total
time ruby --ng -e "puts 123"
#123
#ruby --ng -e "puts 123" 0.00s user 0.00s system 0% cpu 0.488 total
17. Warbler
“Warbler is a gem that makes a .war file out of a Rails,
Merb, or Rack-based application. The intent is to provide
a minimal, flexible, ruby-like way to bundle all your
application files for deployment to a Java application
server.”
- http://kenai.com/projects/warbler/pages/Home
Similarly, you can combine jruby.jar and your Ruby code
into a single .jar file that can be executed simply and
automatically by the operating system.
18. JVisualVM
JVisualVM is a monitoring, profiling, and troubleshooting
tool packaged with the JDK (Java Development Kit).
19. Sample Multithreaded Program
num_threads = 5
threads = []
(0...num_threads).each do |n|
threads << Thread.new do
loop { puts "#{' ' * (5 * n)}#{n}n" }
end
end
threads.each { |thread| thread.join }
20. Multithreading CPU Usage by Ruby Version
rvm 1.8
ruby multithread.rb
PID COMMAND %CPU TIME #TH #WQ #POR #MREG RPRVT RSHRD RSIZE
367 Terminal 105.8 01:20.36 5/1 1 123- 166+ 267M+ 43M 278M+
1104 ruby 82.7 00:13.40 1/1 0 18 28 1248K 240K 2108K
rvm 1.9
ruby multithread.rb
PID COMMAND %CPU TIME #TH #WQ #POR #MREG RPRVT RSHRD RSIZE
1249 ruby 167.6 00:20.85 7/2 0 41 61 2972K+ 240K 4632K+
367 Terminal 153.0 03:49.55 5/1 1 125 267 716M+ 43M 772M+
# What happened? I thought 1.9 used a GIL (Global Interpreter Lock)?
rvm jruby
ruby multithread.rb
ID COMMAND %CPU TIME #TH #WQ #POR #MREG RPRVT RSHRD RSIZE
1364 java 137.1 00:25.84 23/2 1 201 236 80M 3144K 93M
367 Terminal 120.8 05:05.62 6/1 2 127- 291 813M+ 43M 901M+
21. References
• JRuby Main Site: http://jruby.org
• JRuby Book: http://pragprog.com/book/jruby/using-jruby
• Charlie Nutter's JRuby Slide Show:
http://www.slideshare.net/CharlesNutter/rubyconf-uruguay-2010-jruby
• JRuby as a Better Language for the JVM - http://krbtech.wordpress.com/
2009/02/26/jruby-a-better-language-for-the-javavirtual-machine/
• Multilanguage Swing Github Repo:
https://github.com/keithrbennett/multilanguage-swing
• This slideshow:
http://www.slideshare.net/keithrbennett/jruby-synergyofrubyandjava