SlideShare une entreprise Scribd logo
1  sur  43
1

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Insert Information Protection Policy Classification from Slide 13
Coffee And Dessert:
Java and the Raspberry Pi
Simon Ritter
Head of Java Evangelism
Oracle Corporation

Twitter: @speakjava
2

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Insert Information Protection Policy Classification from Slide 13
The following is intended to outline our general product
direction. It is intended for information purposes only, and may
not be incorporated into any contract. It is not a commitment to
deliver any material, code, or functionality, and should not be
relied upon in making purchasing decisions.
The development, release, and timing of any features or
functionality described for Oracle’s products remains at the sole
discretion of Oracle.

3

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Program Agenda
 The Raspberry Pi
 ARM Processors

 Java on ARM and the Raspberry Pi
 Using Java on the Raspberry Pi

 Demos

4

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
The Raspberry Pi

5

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Raspberry Pi
History and Goals
 Project started in 2006
– Goal was to devise a computer to inspire children
– Inspiration from the BBC Micro project from 1981

6

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Raspberry Pi
History and Goals
 Officially launched on Febuary 29th 2012
– First production run was 10,000 boards
– Both RS and Farnell’s servers were stalled on the day of launch
– RS reported over 100,000 pre-orders in one day
– Current production is about 4,000 boards per day
 Originally in China, now by Sony in the UK
– Current estimate is that over 1 million boards sold so far

7

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Raspberry Pi
Specification
 CPU: ARM 11 core running at 700MHz
– Broadcom SoC package
– Can now be overclocked to 1GHz (without breaking the warranty!)

 Memory: 512Mb
 Storage: SD-Card slot
 I/O:
– HDMI and composite video
– Audio out (3.5mm plug)
– 2 x USB ports

– Ethernet
– Header pins for GPIO, UART, SPI and I2C
8

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
ARM Architecture

9

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
A Brief (But Interesting) History Lesson
 Acorn BBC Micro (6502 based)
– Not powerful enough for Acorn’s plans for a business computer

 Berkeley RISC Project
– UNIX kernel only used 30% of instruction set of Motorola 68000
– More registers, less instructions (Register windows)
– One chip architecture to come from this was… SPARC

 Acorn RISC Machine (ARM)
– 32-bit data, 26-bit address space, 27 registers
– First machine was Acorn Archimedes

 Spin off from Acorn, Advanced RISC Machines
10

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
ARM Features
 32-bit RISC Architecture
– ARM accounts for 75% of embedded 32-bit CPUs today

– 8 billion chips sold last year, more than 30 billion in total
 zero manufactured by ARM

 Abstract architecture and microprocessor core designs
– Raspberry Pi uses an ARM11 with the ARMv6 instruction set

 Low power consumption
– Good for mobile devices

– Raspberry Pi can be powered from 700mA 5V only PSU
– Raspberry Pi does not require heatsink or fan
11

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Current ARM Technology

 ARMv6
– ARM 11, ARM Cortex-M

 ARMv7
– ARM Cortex-A, ARM Cortex-M, ARM Cortex-R

 ARMv8 (Announced)
– Will support 64-bit data and addressing
– 32-bit instructions, 30 registers

12

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Java On The ARM and
Raspberry Pi

13

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Java Specifics For ARM
Floating Point Operations
 Despite being an ARMv6 processor it does include an FPU
– FPU only became standard as of ARMv7

 FPU (Hard Float, or HF) is much faster than a software library
 Linux distros and Oracle JVM for ARM assume no HF on ARMv6
– Need special build of both
– Raspbian distro is hard float
– Oracle JVM

 Java SE 7 now included in Raspbian distro
 Java SE 8 (including JavaFX) available as Early Access
14

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Beyond RISC
Performance Improvements
 DSP Enhancements
 Jazelle
 Thumb / Thumb2 / ThumbEE (Reduced instruction set RISC)
– Better code density

 Floating Point (VFP)
 NEON
 Security Enhancements (TrustZone)
– 2 Virtual processors (mode switch)
– Hardware based access control

15

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Java ME Embedded 3.3
Raspberry Pi Version
 Intended for small footprint devices
– Less than 1 Mb of RAM
– Low power processor

 Raspberry Pi is cheap platform to start development
 Includes Device Access API
– GPIO, SPI, I2C, UART support

16

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Using Java on the
Raspberry Pi

17

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Making A Noise With Java
 Sound drivers now included in distros
 Java Sound API
– Remember to add audio to user’s groups
– modprobe snd_pcm_oss
 creates /dev/dsp, needed by MIDI interface

– Some bits work, others not so much
 Playing (the right format) WAV file works
 MIDI seems unbelievably slow

 FreeTTS text-to-speech
– Some bits working (limited domain voice)
18

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
JavaFX on the Raspberry Pi

 Work involves optimal implementation of Prism graphics engine
– Take advantage of Videocore 4 GPU

 Framebuffer only support (no X11)
 Some things not supported
– Media
– WebEngine, WebView
– Some IO still needs work (gamepad)

19

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Using The Serial Port

 UART provides TTL level signals (3.3V)
 RS-232 uses 12V signals
 Use MAX3232 chip to convert
 Use this for access to serial console
 Serial port connectivity
– /dev/ttyAMA0

20

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
The Talking Raspberry Pi
TX

RX GND
+5V

 SP03 text to speech board
– Connected to UART via RS-232

 Disable console output
– Edit /etc/inittab
 Comment out getty /dev/ttyAMA0
– Edit /boot/cmdline.txt
 remove console and kgdboc references

 38,400 baud, 8 Bit, 2 stop bits, no parity
 Simple byte sequence to send text to the board
21

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
USB Peripherals
Universal Serial Bus (But not as simple as serial)
 Easy devices are ones that appear as simple serial devices
– /dev/ttyUSB0

 More complex devices need native code and libusb
– apt-get install libusb-1.0-0-dev

22

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Java and Serial Port/USB Serial Device
JavaComm API
 Install RXTX package
– apt-get install librxtx-java

 How to solve the /dev/ttyS* only problem
– System.setProperty(“gnu.io.rxtx.SerialPorts”,

“/dev/ttyUSB0”);
– System.setProperty(“gnu.io.rxtx.SerialPorts”,

“/dev/ttyAMA0”);

23

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
The OWI Robot Arm
Cheap and cheerful
 Comes with USB interface
– Windows only driver
– Recognized as USB device by Linux

 Use native code for control and JNI
 Simple control protocol
– 3 bytes (1 = arm, 2 = base, 3 = light)
– Combining movements requires some bit twiddling
– Can only stop all motors, not individually

24

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Robot Arm Control
JNI Code
 Native C functions
– Initialisation of arm using libusb and appropriate device
– Separate function for each control element
– Compile to shared library

 Use JNI to generate header file appropriate to Java code usage
– e.g. native int arm_usb_init()
– Implement appropriate stub to call library
– Compile to shared library
– JNI can be fiddly
25

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Robot Arm Control
Java Code
 Java code is simple
– Calibration required to determine time for specific movement

arm_gripper_move(OPEN);
uSleep(500);
arm_gripper_move(STOP);
uSleep(500);
arm_gripper_move(CLOSE);
uSleep(500);
arm_gripper_move(STOP);

26

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Gamepad Controller
Manual dexterity
 Linux supports most of these out of the box
 Drivers create entries in /dev/input
 Java API through Jinput
– Mature technology (not been touched since 2003)
– Recompile code on RasPi
– Needed to tweak build script for incomplete classpath

 EVIOCGUSAGE disappeared
 Rename libjinput-linux.so to libjinput-linux64.so
– Devices do not have general read/write access

 Possible (but frustratingly difficult) to use udev.rules to fix this
27

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Gamepad Controller
Code
 Wrote library on top of JInput
– JInput too generic, needed code to be more specific to gamepad

GamePadController gpc = new GamePadController();
gpc.addButtonListener(GamePadController.BUTTON_1, this);
gpc.addJoystickListener(GamePadController.JOYSTICK_LEFT, this);
new Thread(gpc).start();

28

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Gamepad Controller
Code
public void buttonAction(ButtonEvent be) {
if (be.getId() == GamePadController.BUTTON_1)
robotArm.setGripperLight(true);
...
}
public void joystickAction(JoystickEvent jse) {
if (jse.getId() == GamePadController.JOYSTICK_LEFT) {
if ((position & JoystickEvent.POSITION_LEFT) != 0)
robotArm.moveElbow(ArmController.UP);
}
...
}
29

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Mind Controlled Raspberry Pi

 Neurosky headset
 Bluetooth USB dongle
– Serial communications

 Custom Java library to gather data

30

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Using The GPIO Lines

18 DNC

23

24

DNC

25

8

7

11 (SCLK)

DNC GND

15 (RXD)

5
V

14 (TXD)

P1 Connector Layout (REV 1)

DNC

4

DNC 17

21

22 DNC

P2 Connector: Pin 1 = 3.3V Pin 7,8 = GND
31

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

10
(MOSI)
9 (MISO)

1 (SCL)

0 (SDA)

3.3V

P1-01
Using the GPIO Lines

18

GND 23

24

GND 25

8

7

11 (SCLK)

15 (RXD)

GND

14 (TXD)

5V

1 (SCL)

5
V

0 (SDA)

P1 Connector Layout (Rev 2)

GND

32

4

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

GND 17

27

22 GND

10
(MOSI)
9 (MISO)

3.3V

P1-01
Using the GPIO Lines
Magic Incantations
#define
#define
#define
#define

BCM2708_PERI_BASE 0x20000000
GPIO_BASE (BCM2708_PERI_BASE + 0x200000)
BLOCK_SIZE (1024 * 4)
PAGE_SIZE (1024 * 4)

/* MMAP */
mem_fd = open(“/dev/mem”, O_RDWR | O_SYNC);
gpio_mem = malloc(BLOCK_SIZE + (PAGE_SIZE – 1));
gpio_map = (unsigned char *)mmap(
(caddr_t)gpio_mem, BLOCK_SIZE, PROT_READ | PROT_WRITE,
MAP_SHARED | MAP_FIXED, mem_fd, GPIO_BASE);
gpio = (volatile unsigned *)gpio_map;
33

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Using the GPIO Lines
More Magic Incantations
/* Pin input */
*(gpio + (pin / 10)) &= ~(7 << ((pin % 10) * 3));
/* Pin output */
*(gpio + (pin / 10)) &= ~(7 << ((pin % 10) * 3));
*(gpio + (pin / 10)) |= (1 << ((pin % 10) * 3));

/* Pin high */
*(gpio + 7) = 1 << pin;
/* Pin low */
*(gpio + 10) = 1 << pin;

34

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Hide The Magic Incantations With JNI
Simple Java Interface
 Access to /dev/mem needs root access
– Could solve this by writing our own device driver

gpio_init();
gpio_pin_output(MOTOR_PIN_CLKWISE);
gpio_pin_output(MOTOR_PIN_ACLKWISE);
/* Turn clockwise */
gpio_pin_low(MOTOR_PIN_ACLKWISE);
gpio_pin_high(MOTOR_PIN_CLKWISE);

35

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Pi4J
Simpler IO
 Bridge between native code and Java
– GPIO
– I2C
– SPI

 GPIO code is simple and easy to use
 Still needs root access
 Still in development
– Current version 0.0.4

36

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
GPIO Example: LEGO Motors
Using L293D Dual H-Bridge

GPIO line

GPIO line

GPIO line

GPIO line

+9V Supply

37

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Current Project
In Car Raspberry Pi with JavaFX

38

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
JavaFX Touch Screen Support
Working With Early Access
 Raspian Linux recognises device: eGalax Inc
 Creates two devices in /dev/input/event0, event1

 JavaFX sees devices and uses event0
– No events generated
– Need to use event1 (No idea why)

 Special build of JavaFX?
 Neccesity is the mother of invention
– Delete event0 and mknod event0 c 13 65 (same as event1)

– Need script to repeat at boot time

39

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Conclusions

 Raspberry Pi is a very cool (and cheap) computer
– Great for teaching
– Great introduction to ARM

 Java works well and will get better
 Opportunities are limitless!

40

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Further Information

 java.oracle.com
 www.oracle.com/technetwork/java/embedded
 Raspberry Pi User Guide – Eben Upton, Gareth Halfacree
 www.raspberrypi.org
 blogs.oracle.com/speakjava

41

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Demos

42

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
43

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Contenu connexe

Tendances

Getting the maximum performance in distributed clusters Intel Cluster Studio XE
Getting the maximum performance in distributed clusters Intel Cluster Studio XEGetting the maximum performance in distributed clusters Intel Cluster Studio XE
Getting the maximum performance in distributed clusters Intel Cluster Studio XEIntel Software Brasil
 
Getting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitGetting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitSulamita Garcia
 
Developing an embedded video application on dual Linux + FPGA architecture
Developing an embedded video application on dual Linux + FPGA architectureDeveloping an embedded video application on dual Linux + FPGA architecture
Developing an embedded video application on dual Linux + FPGA architectureChristian Charreyre
 
Sdk For Firmware Development
Sdk For Firmware DevelopmentSdk For Firmware Development
Sdk For Firmware DevelopmentRamesh Prasad
 
Droidcon2013 ndk cpu_architecture_optimization_weggerle_intel
Droidcon2013 ndk cpu_architecture_optimization_weggerle_intelDroidcon2013 ndk cpu_architecture_optimization_weggerle_intel
Droidcon2013 ndk cpu_architecture_optimization_weggerle_intelDroidcon Berlin
 
Droidcon ndk cpu_architecture_optimization
Droidcon ndk cpu_architecture_optimizationDroidcon ndk cpu_architecture_optimization
Droidcon ndk cpu_architecture_optimizationDroidcon Berlin
 
International Journal of Computational Engineering Research(IJCER)
International Journal of Computational Engineering Research(IJCER)International Journal of Computational Engineering Research(IJCER)
International Journal of Computational Engineering Research(IJCER)ijceronline
 
Arm cross development_with_eclipse
Arm cross development_with_eclipseArm cross development_with_eclipse
Arm cross development_with_eclipseWalmar de Paula
 
Intel® MPI Library e OpenMP* - Intel Software Conference 2013
Intel® MPI Library e OpenMP* - Intel Software Conference 2013Intel® MPI Library e OpenMP* - Intel Software Conference 2013
Intel® MPI Library e OpenMP* - Intel Software Conference 2013Intel Software Brasil
 
Arista @ HPC on Wall Street 2012
Arista @ HPC on Wall Street 2012Arista @ HPC on Wall Street 2012
Arista @ HPC on Wall Street 2012Kazunori Sato
 
QPACE QCD Parallel Computing on the Cell Broadband Engine™ (Cell/B.E.)
QPACE QCD Parallel Computing on the Cell Broadband Engine™ (Cell/B.E.)QPACE QCD Parallel Computing on the Cell Broadband Engine™ (Cell/B.E.)
QPACE QCD Parallel Computing on the Cell Broadband Engine™ (Cell/B.E.)Heiko Joerg Schick
 
SoC~FPGA~ASIC~Embedded
SoC~FPGA~ASIC~EmbeddedSoC~FPGA~ASIC~Embedded
SoC~FPGA~ASIC~EmbeddedChili.CHIPS
 
The comparison between FPGA , ARDUINO , ASIC
The comparison between FPGA , ARDUINO , ASIC The comparison between FPGA , ARDUINO , ASIC
The comparison between FPGA , ARDUINO , ASIC Mohamed Youssery
 
SuperSpeed USB and NAND Flash
SuperSpeed USB and NAND FlashSuperSpeed USB and NAND Flash
SuperSpeed USB and NAND FlashNaziaG
 

Tendances (20)

ARM and SoC Traning Part I -- Overview
ARM and SoC Traning Part I -- OverviewARM and SoC Traning Part I -- Overview
ARM and SoC Traning Part I -- Overview
 
Getting the maximum performance in distributed clusters Intel Cluster Studio XE
Getting the maximum performance in distributed clusters Intel Cluster Studio XEGetting the maximum performance in distributed clusters Intel Cluster Studio XE
Getting the maximum performance in distributed clusters Intel Cluster Studio XE
 
SoC: System On Chip
SoC: System On ChipSoC: System On Chip
SoC: System On Chip
 
Getting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitGetting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer Kit
 
Developing an embedded video application on dual Linux + FPGA architecture
Developing an embedded video application on dual Linux + FPGA architectureDeveloping an embedded video application on dual Linux + FPGA architecture
Developing an embedded video application on dual Linux + FPGA architecture
 
Slimline Open Firmware
Slimline Open FirmwareSlimline Open Firmware
Slimline Open Firmware
 
Sdk For Firmware Development
Sdk For Firmware DevelopmentSdk For Firmware Development
Sdk For Firmware Development
 
FPGA workshop
FPGA workshopFPGA workshop
FPGA workshop
 
Intel tools to optimize HPC systems
Intel tools to optimize HPC systemsIntel tools to optimize HPC systems
Intel tools to optimize HPC systems
 
Droidcon2013 ndk cpu_architecture_optimization_weggerle_intel
Droidcon2013 ndk cpu_architecture_optimization_weggerle_intelDroidcon2013 ndk cpu_architecture_optimization_weggerle_intel
Droidcon2013 ndk cpu_architecture_optimization_weggerle_intel
 
Droidcon ndk cpu_architecture_optimization
Droidcon ndk cpu_architecture_optimizationDroidcon ndk cpu_architecture_optimization
Droidcon ndk cpu_architecture_optimization
 
International Journal of Computational Engineering Research(IJCER)
International Journal of Computational Engineering Research(IJCER)International Journal of Computational Engineering Research(IJCER)
International Journal of Computational Engineering Research(IJCER)
 
Arm cross development_with_eclipse
Arm cross development_with_eclipseArm cross development_with_eclipse
Arm cross development_with_eclipse
 
Intel® MPI Library e OpenMP* - Intel Software Conference 2013
Intel® MPI Library e OpenMP* - Intel Software Conference 2013Intel® MPI Library e OpenMP* - Intel Software Conference 2013
Intel® MPI Library e OpenMP* - Intel Software Conference 2013
 
Arista @ HPC on Wall Street 2012
Arista @ HPC on Wall Street 2012Arista @ HPC on Wall Street 2012
Arista @ HPC on Wall Street 2012
 
QPACE QCD Parallel Computing on the Cell Broadband Engine™ (Cell/B.E.)
QPACE QCD Parallel Computing on the Cell Broadband Engine™ (Cell/B.E.)QPACE QCD Parallel Computing on the Cell Broadband Engine™ (Cell/B.E.)
QPACE QCD Parallel Computing on the Cell Broadband Engine™ (Cell/B.E.)
 
Fpga technology
Fpga technologyFpga technology
Fpga technology
 
SoC~FPGA~ASIC~Embedded
SoC~FPGA~ASIC~EmbeddedSoC~FPGA~ASIC~Embedded
SoC~FPGA~ASIC~Embedded
 
The comparison between FPGA , ARDUINO , ASIC
The comparison between FPGA , ARDUINO , ASIC The comparison between FPGA , ARDUINO , ASIC
The comparison between FPGA , ARDUINO , ASIC
 
SuperSpeed USB and NAND Flash
SuperSpeed USB and NAND FlashSuperSpeed USB and NAND Flash
SuperSpeed USB and NAND Flash
 

En vedette

RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)
RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)
RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)savageautomate
 
Interactive media applications
Interactive media applicationsInteractive media applications
Interactive media applicationsNicole174
 
The state of the art biorepository at ILRI
The state of the art biorepository at ILRIThe state of the art biorepository at ILRI
The state of the art biorepository at ILRIAbsolomon Kihara
 
How Java got its Mojo Back - James Governor (Redmonk)
How Java got its Mojo Back - James Governor (Redmonk)					How Java got its Mojo Back - James Governor (Redmonk)
How Java got its Mojo Back - James Governor (Redmonk) jaxLondonConference
 
Streams and Things - Darach Ennis (Ubiquiti Networks)
Streams and Things - Darach Ennis (Ubiquiti Networks)Streams and Things - Darach Ennis (Ubiquiti Networks)
Streams and Things - Darach Ennis (Ubiquiti Networks)jaxLondonConference
 
Big data from the LHC commissioning: practical lessons from big science - Sim...
Big data from the LHC commissioning: practical lessons from big science - Sim...Big data from the LHC commissioning: practical lessons from big science - Sim...
Big data from the LHC commissioning: practical lessons from big science - Sim...jaxLondonConference
 
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)Little words of wisdom for the developer - Guillaume Laforge (Pivotal)
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)jaxLondonConference
 
Designing and Building a Graph Database Application - Ian Robinson (Neo Techn...
Designing and Building a Graph Database Application - Ian Robinson (Neo Techn...Designing and Building a Graph Database Application - Ian Robinson (Neo Techn...
Designing and Building a Graph Database Application - Ian Robinson (Neo Techn...jaxLondonConference
 
Real-world polyglot programming on the JVM - Ben Summers (ONEIS)
Real-world polyglot programming on the JVM  - Ben Summers (ONEIS)Real-world polyglot programming on the JVM  - Ben Summers (ONEIS)
Real-world polyglot programming on the JVM - Ben Summers (ONEIS)jaxLondonConference
 
Scaling Scala to the database - Stefan Zeiger (Typesafe)
Scaling Scala to the database - Stefan Zeiger (Typesafe)Scaling Scala to the database - Stefan Zeiger (Typesafe)
Scaling Scala to the database - Stefan Zeiger (Typesafe)jaxLondonConference
 
How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...
How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...
How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...jaxLondonConference
 
Bringing your app to the web with Dart - Chris Buckett (Entity Group)
Bringing your app to the web with Dart - Chris Buckett (Entity Group)Bringing your app to the web with Dart - Chris Buckett (Entity Group)
Bringing your app to the web with Dart - Chris Buckett (Entity Group)jaxLondonConference
 
A real-time architecture using Hadoop & Storm - Nathan Bijnens & Geert Van La...
A real-time architecture using Hadoop & Storm - Nathan Bijnens & Geert Van La...A real-time architecture using Hadoop & Storm - Nathan Bijnens & Geert Van La...
A real-time architecture using Hadoop & Storm - Nathan Bijnens & Geert Van La...jaxLondonConference
 
Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)
Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)
Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)jaxLondonConference
 
How Windows 10 will change the way we use devices
How Windows 10 will change the way we use devicesHow Windows 10 will change the way we use devices
How Windows 10 will change the way we use devicesCommelius Solutions
 
Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...
Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...
Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...jaxLondonConference
 
Databases and agile development - Dwight Merriman (MongoDB)
Databases and agile development - Dwight Merriman (MongoDB)Databases and agile development - Dwight Merriman (MongoDB)
Databases and agile development - Dwight Merriman (MongoDB)jaxLondonConference
 
Practical Performance: Understand the Performance of Your Application - Chris...
Practical Performance: Understand the Performance of Your Application - Chris...Practical Performance: Understand the Performance of Your Application - Chris...
Practical Performance: Understand the Performance of Your Application - Chris...jaxLondonConference
 
Design is a Process, not an Artefact - Trisha Gee (MongoDB)
Design is a Process, not an Artefact - Trisha Gee (MongoDB)Design is a Process, not an Artefact - Trisha Gee (MongoDB)
Design is a Process, not an Artefact - Trisha Gee (MongoDB)jaxLondonConference
 

En vedette (20)

RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)
RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)
RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)
 
Interactive media applications
Interactive media applicationsInteractive media applications
Interactive media applications
 
The state of the art biorepository at ILRI
The state of the art biorepository at ILRIThe state of the art biorepository at ILRI
The state of the art biorepository at ILRI
 
How Java got its Mojo Back - James Governor (Redmonk)
How Java got its Mojo Back - James Governor (Redmonk)					How Java got its Mojo Back - James Governor (Redmonk)
How Java got its Mojo Back - James Governor (Redmonk)
 
Why other ppl_dont_get_it
Why other ppl_dont_get_itWhy other ppl_dont_get_it
Why other ppl_dont_get_it
 
Streams and Things - Darach Ennis (Ubiquiti Networks)
Streams and Things - Darach Ennis (Ubiquiti Networks)Streams and Things - Darach Ennis (Ubiquiti Networks)
Streams and Things - Darach Ennis (Ubiquiti Networks)
 
Big data from the LHC commissioning: practical lessons from big science - Sim...
Big data from the LHC commissioning: practical lessons from big science - Sim...Big data from the LHC commissioning: practical lessons from big science - Sim...
Big data from the LHC commissioning: practical lessons from big science - Sim...
 
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)Little words of wisdom for the developer - Guillaume Laforge (Pivotal)
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)
 
Designing and Building a Graph Database Application - Ian Robinson (Neo Techn...
Designing and Building a Graph Database Application - Ian Robinson (Neo Techn...Designing and Building a Graph Database Application - Ian Robinson (Neo Techn...
Designing and Building a Graph Database Application - Ian Robinson (Neo Techn...
 
Real-world polyglot programming on the JVM - Ben Summers (ONEIS)
Real-world polyglot programming on the JVM  - Ben Summers (ONEIS)Real-world polyglot programming on the JVM  - Ben Summers (ONEIS)
Real-world polyglot programming on the JVM - Ben Summers (ONEIS)
 
Scaling Scala to the database - Stefan Zeiger (Typesafe)
Scaling Scala to the database - Stefan Zeiger (Typesafe)Scaling Scala to the database - Stefan Zeiger (Typesafe)
Scaling Scala to the database - Stefan Zeiger (Typesafe)
 
How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...
How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...
How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...
 
Bringing your app to the web with Dart - Chris Buckett (Entity Group)
Bringing your app to the web with Dart - Chris Buckett (Entity Group)Bringing your app to the web with Dart - Chris Buckett (Entity Group)
Bringing your app to the web with Dart - Chris Buckett (Entity Group)
 
A real-time architecture using Hadoop & Storm - Nathan Bijnens & Geert Van La...
A real-time architecture using Hadoop & Storm - Nathan Bijnens & Geert Van La...A real-time architecture using Hadoop & Storm - Nathan Bijnens & Geert Van La...
A real-time architecture using Hadoop & Storm - Nathan Bijnens & Geert Van La...
 
Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)
Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)
Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)
 
How Windows 10 will change the way we use devices
How Windows 10 will change the way we use devicesHow Windows 10 will change the way we use devices
How Windows 10 will change the way we use devices
 
Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...
Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...
Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...
 
Databases and agile development - Dwight Merriman (MongoDB)
Databases and agile development - Dwight Merriman (MongoDB)Databases and agile development - Dwight Merriman (MongoDB)
Databases and agile development - Dwight Merriman (MongoDB)
 
Practical Performance: Understand the Performance of Your Application - Chris...
Practical Performance: Understand the Performance of Your Application - Chris...Practical Performance: Understand the Performance of Your Application - Chris...
Practical Performance: Understand the Performance of Your Application - Chris...
 
Design is a Process, not an Artefact - Trisha Gee (MongoDB)
Design is a Process, not an Artefact - Trisha Gee (MongoDB)Design is a Process, not an Artefact - Trisha Gee (MongoDB)
Design is a Process, not an Artefact - Trisha Gee (MongoDB)
 

Similaire à Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritter (Oracle)

Raspberry pi technology
Raspberry pi technologyRaspberry pi technology
Raspberry pi technologyZeeshan Aslam
 
Tac Presentation October 72014- Raspberry PI
Tac Presentation October 72014- Raspberry PITac Presentation October 72014- Raspberry PI
Tac Presentation October 72014- Raspberry PICliff Samuels Jr.
 
Oracle Java ME Embedded 8.1 Devloper Preview: Introduction
Oracle Java ME Embedded 8.1 Devloper Preview: IntroductionOracle Java ME Embedded 8.1 Devloper Preview: Introduction
Oracle Java ME Embedded 8.1 Devloper Preview: Introductionterrencebarr
 
fpga1 - What is.pptx
fpga1 - What is.pptxfpga1 - What is.pptx
fpga1 - What is.pptxssuser0de10a
 
Presentation sparc m6 m5-32 server technical overview
Presentation   sparc m6 m5-32 server technical overviewPresentation   sparc m6 m5-32 server technical overview
Presentation sparc m6 m5-32 server technical overviewsolarisyougood
 
Connected hardware for Software Engineers 101
Connected hardware for Software Engineers 101Connected hardware for Software Engineers 101
Connected hardware for Software Engineers 101Pance Cavkovski
 
Introduction to Advanced embedded systems course
Introduction to Advanced embedded systems courseIntroduction to Advanced embedded systems course
Introduction to Advanced embedded systems courseanishgoel
 
Embedded Erlang, Nerves, and SumoBots
Embedded Erlang, Nerves, and SumoBotsEmbedded Erlang, Nerves, and SumoBots
Embedded Erlang, Nerves, and SumoBotsFrank Hunleth
 
Features of modern intel microprocessors
Features of modern intel microprocessorsFeatures of modern intel microprocessors
Features of modern intel microprocessorsKrunal Siddhapathak
 
Introduction to raspberry pi
Introduction to raspberry piIntroduction to raspberry pi
Introduction to raspberry pipraveen_23
 
How to choose your project controller
How to choose your project controllerHow to choose your project controller
How to choose your project controllerMuhammad Shorrab
 
system unit and Motherboard
system unit and Motherboardsystem unit and Motherboard
system unit and Motherboardromeodait
 
Iaetsd the universal brain for all robots
Iaetsd the universal brain for all robotsIaetsd the universal brain for all robots
Iaetsd the universal brain for all robotsIaetsd Iaetsd
 
Внутренняя архитектура IOS-XE: средства траблшутинга предачи трафика на ASR1k...
Внутренняя архитектура IOS-XE: средства траблшутинга предачи трафика на ASR1k...Внутренняя архитектура IOS-XE: средства траблшутинга предачи трафика на ASR1k...
Внутренняя архитектура IOS-XE: средства траблшутинга предачи трафика на ASR1k...Cisco Russia
 
Some experiences for porting application to Intel Xeon Phi
Some experiences for porting application to Intel Xeon PhiSome experiences for porting application to Intel Xeon Phi
Some experiences for porting application to Intel Xeon PhiMaho Nakata
 
Cell Technology for Graphics and Visualization
Cell Technology for Graphics and VisualizationCell Technology for Graphics and Visualization
Cell Technology for Graphics and VisualizationSlide_N
 
Design of 32 Bit Processor Using 8051 and Leon3 (Progress Report)
Design of 32 Bit Processor Using 8051 and Leon3 (Progress Report)Design of 32 Bit Processor Using 8051 and Leon3 (Progress Report)
Design of 32 Bit Processor Using 8051 and Leon3 (Progress Report)Talal Khaliq
 

Similaire à Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritter (Oracle) (20)

Raspberry pi technology
Raspberry pi technologyRaspberry pi technology
Raspberry pi technology
 
Tac Presentation October 72014- Raspberry PI
Tac Presentation October 72014- Raspberry PITac Presentation October 72014- Raspberry PI
Tac Presentation October 72014- Raspberry PI
 
Oracle Java ME Embedded 8.1 Devloper Preview: Introduction
Oracle Java ME Embedded 8.1 Devloper Preview: IntroductionOracle Java ME Embedded 8.1 Devloper Preview: Introduction
Oracle Java ME Embedded 8.1 Devloper Preview: Introduction
 
fpga1 - What is.pptx
fpga1 - What is.pptxfpga1 - What is.pptx
fpga1 - What is.pptx
 
ARM Processor Tutorial
ARM Processor Tutorial ARM Processor Tutorial
ARM Processor Tutorial
 
Presentation sparc m6 m5-32 server technical overview
Presentation   sparc m6 m5-32 server technical overviewPresentation   sparc m6 m5-32 server technical overview
Presentation sparc m6 m5-32 server technical overview
 
Connected hardware for Software Engineers 101
Connected hardware for Software Engineers 101Connected hardware for Software Engineers 101
Connected hardware for Software Engineers 101
 
Introduction to Advanced embedded systems course
Introduction to Advanced embedded systems courseIntroduction to Advanced embedded systems course
Introduction to Advanced embedded systems course
 
Embedded Erlang, Nerves, and SumoBots
Embedded Erlang, Nerves, and SumoBotsEmbedded Erlang, Nerves, and SumoBots
Embedded Erlang, Nerves, and SumoBots
 
Features of modern intel microprocessors
Features of modern intel microprocessorsFeatures of modern intel microprocessors
Features of modern intel microprocessors
 
Introduction to raspberry pi
Introduction to raspberry piIntroduction to raspberry pi
Introduction to raspberry pi
 
SPI Drivers
SPI DriversSPI Drivers
SPI Drivers
 
How to choose your project controller
How to choose your project controllerHow to choose your project controller
How to choose your project controller
 
SPI Drivers
SPI DriversSPI Drivers
SPI Drivers
 
system unit and Motherboard
system unit and Motherboardsystem unit and Motherboard
system unit and Motherboard
 
Iaetsd the universal brain for all robots
Iaetsd the universal brain for all robotsIaetsd the universal brain for all robots
Iaetsd the universal brain for all robots
 
Внутренняя архитектура IOS-XE: средства траблшутинга предачи трафика на ASR1k...
Внутренняя архитектура IOS-XE: средства траблшутинга предачи трафика на ASR1k...Внутренняя архитектура IOS-XE: средства траблшутинга предачи трафика на ASR1k...
Внутренняя архитектура IOS-XE: средства траблшутинга предачи трафика на ASR1k...
 
Some experiences for porting application to Intel Xeon Phi
Some experiences for porting application to Intel Xeon PhiSome experiences for porting application to Intel Xeon Phi
Some experiences for porting application to Intel Xeon Phi
 
Cell Technology for Graphics and Visualization
Cell Technology for Graphics and VisualizationCell Technology for Graphics and Visualization
Cell Technology for Graphics and Visualization
 
Design of 32 Bit Processor Using 8051 and Leon3 (Progress Report)
Design of 32 Bit Processor Using 8051 and Leon3 (Progress Report)Design of 32 Bit Processor Using 8051 and Leon3 (Progress Report)
Design of 32 Bit Processor Using 8051 and Leon3 (Progress Report)
 

Plus de jaxLondonConference

Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...
Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...
Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...jaxLondonConference
 
Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...
Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...
Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...jaxLondonConference
 
JVM Support for Multitenant Applications - Steve Poole (IBM)
JVM Support for Multitenant Applications - Steve Poole (IBM)JVM Support for Multitenant Applications - Steve Poole (IBM)
JVM Support for Multitenant Applications - Steve Poole (IBM)jaxLondonConference
 
Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)
Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)
Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)jaxLondonConference
 
What You Need to Know About Lambdas - Jamie Allen (Typesafe)
What You Need to Know About Lambdas - Jamie Allen (Typesafe)What You Need to Know About Lambdas - Jamie Allen (Typesafe)
What You Need to Know About Lambdas - Jamie Allen (Typesafe)jaxLondonConference
 
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...jaxLondonConference
 
Java Testing With Spock - Ken Sipe (Trexin Consulting)
Java Testing With Spock - Ken Sipe (Trexin Consulting)Java Testing With Spock - Ken Sipe (Trexin Consulting)
Java Testing With Spock - Ken Sipe (Trexin Consulting)jaxLondonConference
 
Big Events, Mob Scale - Darach Ennis (Push Technology)
Big Events, Mob Scale - Darach Ennis (Push Technology)Big Events, Mob Scale - Darach Ennis (Push Technology)
Big Events, Mob Scale - Darach Ennis (Push Technology)jaxLondonConference
 
What makes Groovy Groovy - Guillaume Laforge (Pivotal)
What makes Groovy Groovy  - Guillaume Laforge (Pivotal)What makes Groovy Groovy  - Guillaume Laforge (Pivotal)
What makes Groovy Groovy - Guillaume Laforge (Pivotal)jaxLondonConference
 
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...jaxLondonConference
 
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...jaxLondonConference
 
Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...
Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...
Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...jaxLondonConference
 
The Curious Clojurist - Neal Ford (Thoughtworks)
The Curious Clojurist - Neal Ford (Thoughtworks)The Curious Clojurist - Neal Ford (Thoughtworks)
The Curious Clojurist - Neal Ford (Thoughtworks)jaxLondonConference
 
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)jaxLondonConference
 
Put your Java apps to sleep? Find out how - John Matthew Holt (Waratek)
Put your Java apps to sleep? Find out how - John Matthew Holt (Waratek)Put your Java apps to sleep? Find out how - John Matthew Holt (Waratek)
Put your Java apps to sleep? Find out how - John Matthew Holt (Waratek)jaxLondonConference
 
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...jaxLondonConference
 
Large scale, interactive ad-hoc queries over different datastores with Apache...
Large scale, interactive ad-hoc queries over different datastores with Apache...Large scale, interactive ad-hoc queries over different datastores with Apache...
Large scale, interactive ad-hoc queries over different datastores with Apache...jaxLondonConference
 
Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...
Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...
Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...jaxLondonConference
 

Plus de jaxLondonConference (19)

Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...
Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...
Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...
 
Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...
Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...
Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...
 
JVM Support for Multitenant Applications - Steve Poole (IBM)
JVM Support for Multitenant Applications - Steve Poole (IBM)JVM Support for Multitenant Applications - Steve Poole (IBM)
JVM Support for Multitenant Applications - Steve Poole (IBM)
 
Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)
Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)
Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)
 
What You Need to Know About Lambdas - Jamie Allen (Typesafe)
What You Need to Know About Lambdas - Jamie Allen (Typesafe)What You Need to Know About Lambdas - Jamie Allen (Typesafe)
What You Need to Know About Lambdas - Jamie Allen (Typesafe)
 
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
 
Java Testing With Spock - Ken Sipe (Trexin Consulting)
Java Testing With Spock - Ken Sipe (Trexin Consulting)Java Testing With Spock - Ken Sipe (Trexin Consulting)
Java Testing With Spock - Ken Sipe (Trexin Consulting)
 
Big Events, Mob Scale - Darach Ennis (Push Technology)
Big Events, Mob Scale - Darach Ennis (Push Technology)Big Events, Mob Scale - Darach Ennis (Push Technology)
Big Events, Mob Scale - Darach Ennis (Push Technology)
 
What makes Groovy Groovy - Guillaume Laforge (Pivotal)
What makes Groovy Groovy  - Guillaume Laforge (Pivotal)What makes Groovy Groovy  - Guillaume Laforge (Pivotal)
What makes Groovy Groovy - Guillaume Laforge (Pivotal)
 
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...
 
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
 
Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...
Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...
Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...
 
The Curious Clojurist - Neal Ford (Thoughtworks)
The Curious Clojurist - Neal Ford (Thoughtworks)The Curious Clojurist - Neal Ford (Thoughtworks)
The Curious Clojurist - Neal Ford (Thoughtworks)
 
TDD at scale - Mash Badar (UBS)
TDD at scale - Mash Badar (UBS)TDD at scale - Mash Badar (UBS)
TDD at scale - Mash Badar (UBS)
 
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
 
Put your Java apps to sleep? Find out how - John Matthew Holt (Waratek)
Put your Java apps to sleep? Find out how - John Matthew Holt (Waratek)Put your Java apps to sleep? Find out how - John Matthew Holt (Waratek)
Put your Java apps to sleep? Find out how - John Matthew Holt (Waratek)
 
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
 
Large scale, interactive ad-hoc queries over different datastores with Apache...
Large scale, interactive ad-hoc queries over different datastores with Apache...Large scale, interactive ad-hoc queries over different datastores with Apache...
Large scale, interactive ad-hoc queries over different datastores with Apache...
 
Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...
Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...
Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...
 

Dernier

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024SynarionITSolutions
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 

Dernier (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritter (Oracle)

  • 1. 1 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 13
  • 2. Coffee And Dessert: Java and the Raspberry Pi Simon Ritter Head of Java Evangelism Oracle Corporation Twitter: @speakjava 2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 13
  • 3. The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. 3 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 4. Program Agenda  The Raspberry Pi  ARM Processors  Java on ARM and the Raspberry Pi  Using Java on the Raspberry Pi  Demos 4 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 5. The Raspberry Pi 5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 6. Raspberry Pi History and Goals  Project started in 2006 – Goal was to devise a computer to inspire children – Inspiration from the BBC Micro project from 1981 6 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 7. Raspberry Pi History and Goals  Officially launched on Febuary 29th 2012 – First production run was 10,000 boards – Both RS and Farnell’s servers were stalled on the day of launch – RS reported over 100,000 pre-orders in one day – Current production is about 4,000 boards per day  Originally in China, now by Sony in the UK – Current estimate is that over 1 million boards sold so far 7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 8. Raspberry Pi Specification  CPU: ARM 11 core running at 700MHz – Broadcom SoC package – Can now be overclocked to 1GHz (without breaking the warranty!)  Memory: 512Mb  Storage: SD-Card slot  I/O: – HDMI and composite video – Audio out (3.5mm plug) – 2 x USB ports – Ethernet – Header pins for GPIO, UART, SPI and I2C 8 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 9. ARM Architecture 9 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 10. A Brief (But Interesting) History Lesson  Acorn BBC Micro (6502 based) – Not powerful enough for Acorn’s plans for a business computer  Berkeley RISC Project – UNIX kernel only used 30% of instruction set of Motorola 68000 – More registers, less instructions (Register windows) – One chip architecture to come from this was… SPARC  Acorn RISC Machine (ARM) – 32-bit data, 26-bit address space, 27 registers – First machine was Acorn Archimedes  Spin off from Acorn, Advanced RISC Machines 10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 11. ARM Features  32-bit RISC Architecture – ARM accounts for 75% of embedded 32-bit CPUs today – 8 billion chips sold last year, more than 30 billion in total  zero manufactured by ARM  Abstract architecture and microprocessor core designs – Raspberry Pi uses an ARM11 with the ARMv6 instruction set  Low power consumption – Good for mobile devices – Raspberry Pi can be powered from 700mA 5V only PSU – Raspberry Pi does not require heatsink or fan 11 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 12. Current ARM Technology  ARMv6 – ARM 11, ARM Cortex-M  ARMv7 – ARM Cortex-A, ARM Cortex-M, ARM Cortex-R  ARMv8 (Announced) – Will support 64-bit data and addressing – 32-bit instructions, 30 registers 12 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 13. Java On The ARM and Raspberry Pi 13 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 14. Java Specifics For ARM Floating Point Operations  Despite being an ARMv6 processor it does include an FPU – FPU only became standard as of ARMv7  FPU (Hard Float, or HF) is much faster than a software library  Linux distros and Oracle JVM for ARM assume no HF on ARMv6 – Need special build of both – Raspbian distro is hard float – Oracle JVM  Java SE 7 now included in Raspbian distro  Java SE 8 (including JavaFX) available as Early Access 14 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 15. Beyond RISC Performance Improvements  DSP Enhancements  Jazelle  Thumb / Thumb2 / ThumbEE (Reduced instruction set RISC) – Better code density  Floating Point (VFP)  NEON  Security Enhancements (TrustZone) – 2 Virtual processors (mode switch) – Hardware based access control 15 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 16. Java ME Embedded 3.3 Raspberry Pi Version  Intended for small footprint devices – Less than 1 Mb of RAM – Low power processor  Raspberry Pi is cheap platform to start development  Includes Device Access API – GPIO, SPI, I2C, UART support 16 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 17. Using Java on the Raspberry Pi 17 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 18. Making A Noise With Java  Sound drivers now included in distros  Java Sound API – Remember to add audio to user’s groups – modprobe snd_pcm_oss  creates /dev/dsp, needed by MIDI interface – Some bits work, others not so much  Playing (the right format) WAV file works  MIDI seems unbelievably slow  FreeTTS text-to-speech – Some bits working (limited domain voice) 18 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 19. JavaFX on the Raspberry Pi  Work involves optimal implementation of Prism graphics engine – Take advantage of Videocore 4 GPU  Framebuffer only support (no X11)  Some things not supported – Media – WebEngine, WebView – Some IO still needs work (gamepad) 19 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 20. Using The Serial Port  UART provides TTL level signals (3.3V)  RS-232 uses 12V signals  Use MAX3232 chip to convert  Use this for access to serial console  Serial port connectivity – /dev/ttyAMA0 20 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 21. The Talking Raspberry Pi TX RX GND +5V  SP03 text to speech board – Connected to UART via RS-232  Disable console output – Edit /etc/inittab  Comment out getty /dev/ttyAMA0 – Edit /boot/cmdline.txt  remove console and kgdboc references  38,400 baud, 8 Bit, 2 stop bits, no parity  Simple byte sequence to send text to the board 21 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 22. USB Peripherals Universal Serial Bus (But not as simple as serial)  Easy devices are ones that appear as simple serial devices – /dev/ttyUSB0  More complex devices need native code and libusb – apt-get install libusb-1.0-0-dev 22 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 23. Java and Serial Port/USB Serial Device JavaComm API  Install RXTX package – apt-get install librxtx-java  How to solve the /dev/ttyS* only problem – System.setProperty(“gnu.io.rxtx.SerialPorts”, “/dev/ttyUSB0”); – System.setProperty(“gnu.io.rxtx.SerialPorts”, “/dev/ttyAMA0”); 23 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 24. The OWI Robot Arm Cheap and cheerful  Comes with USB interface – Windows only driver – Recognized as USB device by Linux  Use native code for control and JNI  Simple control protocol – 3 bytes (1 = arm, 2 = base, 3 = light) – Combining movements requires some bit twiddling – Can only stop all motors, not individually 24 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 25. Robot Arm Control JNI Code  Native C functions – Initialisation of arm using libusb and appropriate device – Separate function for each control element – Compile to shared library  Use JNI to generate header file appropriate to Java code usage – e.g. native int arm_usb_init() – Implement appropriate stub to call library – Compile to shared library – JNI can be fiddly 25 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 26. Robot Arm Control Java Code  Java code is simple – Calibration required to determine time for specific movement arm_gripper_move(OPEN); uSleep(500); arm_gripper_move(STOP); uSleep(500); arm_gripper_move(CLOSE); uSleep(500); arm_gripper_move(STOP); 26 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 27. Gamepad Controller Manual dexterity  Linux supports most of these out of the box  Drivers create entries in /dev/input  Java API through Jinput – Mature technology (not been touched since 2003) – Recompile code on RasPi – Needed to tweak build script for incomplete classpath  EVIOCGUSAGE disappeared  Rename libjinput-linux.so to libjinput-linux64.so – Devices do not have general read/write access  Possible (but frustratingly difficult) to use udev.rules to fix this 27 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 28. Gamepad Controller Code  Wrote library on top of JInput – JInput too generic, needed code to be more specific to gamepad GamePadController gpc = new GamePadController(); gpc.addButtonListener(GamePadController.BUTTON_1, this); gpc.addJoystickListener(GamePadController.JOYSTICK_LEFT, this); new Thread(gpc).start(); 28 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 29. Gamepad Controller Code public void buttonAction(ButtonEvent be) { if (be.getId() == GamePadController.BUTTON_1) robotArm.setGripperLight(true); ... } public void joystickAction(JoystickEvent jse) { if (jse.getId() == GamePadController.JOYSTICK_LEFT) { if ((position & JoystickEvent.POSITION_LEFT) != 0) robotArm.moveElbow(ArmController.UP); } ... } 29 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 30. Mind Controlled Raspberry Pi  Neurosky headset  Bluetooth USB dongle – Serial communications  Custom Java library to gather data 30 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 31. Using The GPIO Lines 18 DNC 23 24 DNC 25 8 7 11 (SCLK) DNC GND 15 (RXD) 5 V 14 (TXD) P1 Connector Layout (REV 1) DNC 4 DNC 17 21 22 DNC P2 Connector: Pin 1 = 3.3V Pin 7,8 = GND 31 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 10 (MOSI) 9 (MISO) 1 (SCL) 0 (SDA) 3.3V P1-01
  • 32. Using the GPIO Lines 18 GND 23 24 GND 25 8 7 11 (SCLK) 15 (RXD) GND 14 (TXD) 5V 1 (SCL) 5 V 0 (SDA) P1 Connector Layout (Rev 2) GND 32 4 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. GND 17 27 22 GND 10 (MOSI) 9 (MISO) 3.3V P1-01
  • 33. Using the GPIO Lines Magic Incantations #define #define #define #define BCM2708_PERI_BASE 0x20000000 GPIO_BASE (BCM2708_PERI_BASE + 0x200000) BLOCK_SIZE (1024 * 4) PAGE_SIZE (1024 * 4) /* MMAP */ mem_fd = open(“/dev/mem”, O_RDWR | O_SYNC); gpio_mem = malloc(BLOCK_SIZE + (PAGE_SIZE – 1)); gpio_map = (unsigned char *)mmap( (caddr_t)gpio_mem, BLOCK_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, mem_fd, GPIO_BASE); gpio = (volatile unsigned *)gpio_map; 33 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 34. Using the GPIO Lines More Magic Incantations /* Pin input */ *(gpio + (pin / 10)) &= ~(7 << ((pin % 10) * 3)); /* Pin output */ *(gpio + (pin / 10)) &= ~(7 << ((pin % 10) * 3)); *(gpio + (pin / 10)) |= (1 << ((pin % 10) * 3)); /* Pin high */ *(gpio + 7) = 1 << pin; /* Pin low */ *(gpio + 10) = 1 << pin; 34 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 35. Hide The Magic Incantations With JNI Simple Java Interface  Access to /dev/mem needs root access – Could solve this by writing our own device driver gpio_init(); gpio_pin_output(MOTOR_PIN_CLKWISE); gpio_pin_output(MOTOR_PIN_ACLKWISE); /* Turn clockwise */ gpio_pin_low(MOTOR_PIN_ACLKWISE); gpio_pin_high(MOTOR_PIN_CLKWISE); 35 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 36. Pi4J Simpler IO  Bridge between native code and Java – GPIO – I2C – SPI  GPIO code is simple and easy to use  Still needs root access  Still in development – Current version 0.0.4 36 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 37. GPIO Example: LEGO Motors Using L293D Dual H-Bridge GPIO line GPIO line GPIO line GPIO line +9V Supply 37 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 38. Current Project In Car Raspberry Pi with JavaFX 38 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 39. JavaFX Touch Screen Support Working With Early Access  Raspian Linux recognises device: eGalax Inc  Creates two devices in /dev/input/event0, event1  JavaFX sees devices and uses event0 – No events generated – Need to use event1 (No idea why)  Special build of JavaFX?  Neccesity is the mother of invention – Delete event0 and mknod event0 c 13 65 (same as event1) – Need script to repeat at boot time 39 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 40. Conclusions  Raspberry Pi is a very cool (and cheap) computer – Great for teaching – Great introduction to ARM  Java works well and will get better  Opportunities are limitless! 40 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 41. Further Information  java.oracle.com  www.oracle.com/technetwork/java/embedded  Raspberry Pi User Guide – Eben Upton, Gareth Halfacree  www.raspberrypi.org  blogs.oracle.com/speakjava 41 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 42. Demos 42 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 43. 43 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Notes de l'éditeur

  1. Thumb – making code more condensed. Thumb =16bit, thumb 2 = 32 bit, thumb extended execution good for JIT type compilationNEON enhanced SIMD (Single Instruction, multiple data) Media Processing Engine, optimised for mediaTrustZone adds an extra bit to indicate security.