Deep Dive into Mobile Development with Codename One - Free Online Course Material
Tags: java, opensource, tutorial, mobile
Published: 2022-08-10 08:29:27

This is the second part of my online courses from 2017 that are now available for free. In this course we go beyond the developer guide and the online docs to explain how to work with crucial Codename One tools required for building real world apps. We explain everything from device portability to native interfaces (access to native device features) and much more!

As part of this course we cover the process of building a simple restaurant ordering system and we cover several complex Codename One API's.

The original version of the course included a section created by Chidiebere Okwudire the creator of parse4cn1 which is removed here. I chose to omit it since the status of the Parse project is unclear and I'm not sure about IP ownership for that section.

## Working with CSS
The CSS in this section should work well for new versions too. In Maven CSS is the default and the whole "setting up" portion is no longer applicable.

The source code for this part is in [this github repository](https://github.com/shai-almog/CSSTest).

{% embed https://www.youtube.com/watch?v=UxZ1HeheGwU %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/4eLsVn3LCdLEGd %}

## Working with Custom Web Services

### Introduction to Spring Boot
The source code used in this part is available in [this github repository](https://github.com/shai-almog/TestSpring).

{% embed https://www.youtube.com/watch?v=tugJ_7xMdzs %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/rAOks7cbWcqi4J %}

### Connecting to a Web Service
The source code used in this part is available in [this github repository](https://github.com/shai-almog/ShoppingList).

{% embed https://www.youtube.com/watch?v=3B7C0ZbV8Bc %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/fmmHKNdbwIaW6s %}

## Extracting a UI Design

### Introduction
The source code used in this part is available in [this github repository](https://github.com/shai-almog/MyRestaurant).

{% embed https://www.youtube.com/watch?v=BXwh2T7wvfc %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/A9enQr5tGgvAK6 %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/gnpMfY461ThNff %}

### Cutting Images in Photoshop
{% embed https://www.youtube.com/watch?v=exQ8xXAxtoU %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/6Csd1e14lMqpsd %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/bCdj3ug9biImfE %}

### CSS
{% embed https://www.youtube.com/watch?v=-f1yue3hDEk %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/Q5H9r0wFdkVFY %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/l9sThsgXTZpPcm %}

### BaseForm
{% embed https://www.youtube.com/watch?v=aNFKBDeky2s %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/kyO9nGFan99Rk4 %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/LIXZJ1P2ZZ7jiS %}

### MainMenuForm
{% embed https://www.youtube.com/watch?v=WYlM2utu4Ps %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/3dnObFhcbgIiu8 %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/rjN8Rd8oCTVZrU %}

### CheckoutForm
{% embed https://www.youtube.com/watch?v=ts-Q1zBGXco %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/ubYYw0QEIRYrcW %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/27Xu2h66ehy03 %}

## UI Design From Scratch

### Introduction
{% embed https://www.youtube.com/watch?v=aZ2Y74xPj_0 %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/3BcigLzqA7K8sf %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/IEn3mQbBjEQIJe %}

### The New Forms
{% embed https://www.youtube.com/watch?v=bH7cS5ENNlw %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/HCfePAW7SgitfY %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/2Cp6srTK0QUAoV %}

### Fixing the Checkout Experience
{% embed https://www.youtube.com/watch?v=CvbcWC4hLYk %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/FTwldVdHegKEqH %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/5vKCKliB2hx3uZ %}

### CSS Changes
{% embed https://www.youtube.com/watch?v=MLbOdCt67Rw %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/78WYoiGAnpjeEQ %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/F8WR6rYyxY7cxB %}

### Code Changes and Summary
{% embed https://www.youtube.com/watch?v=a6q1M_wqEYY %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/AGJ2Mi8fwxpYl4 %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/CPWNTjVFJowDPv %}

## Architecture

### Overview and Basic Model
{% embed https://www.youtube.com/watch?v=mFFjxs9EDW8 %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/8bLgBEOzXQZ0Aw %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/8bLgBEOzXQZ0Aw %}

### Integration and Summary
{% embed https://www.youtube.com/watch?v=Ke8bjFdD1bc %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/GkQI1QpSzZwoKz %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/qCxiDjRHPwmsdS %}

## Native Interfaces - Billing

### The Native Interface Callback
The version of the code matching the changes in this section is [here](https://github.com/shai-almog/MyRestaurantNativeInterfaces).

{% embed https://www.youtube.com/watch?v=jVuNrLw4e-A %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/fe8hjkPExx31BX %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/dAuAcQx04tPQUa %}

### Dependencies - Gradle and CocoaPods
{% embed https://www.youtube.com/watch?v=d1T25sbFUKE %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/e91vXZvt68NxPw %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/JlobrWR0jC51c3 %}

### The Native Code
{% embed https://www.youtube.com/watch?v=swgT_aDsv3U %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/MMhtpzgv1542lU %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/2Lzs6yxTlCM0z6 %}

## Native Interfaces - Camera

### Introduction and Generic Code
{% embed https://www.youtube.com/watch?v=Mcw8z_uP3BA %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/PEnJQNpGtFXAq %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/8wt0ZrX8NnyOxM %}

### Implementing the Native Camera on Android
{% embed https://www.youtube.com/watch?v=16-Vkgcx2kg %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/4uuJifUUeHCmLt %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/ztvQMC9tAKZurW %}

### Camera iOS Port Basics
{% embed https://www.youtube.com/watch?v=17ISIksjcPM %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/jLSA6sEUOiyRiC %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/nnAwGFEF4oyY0a %}

### ARC and View on iOS
{% embed https://www.youtube.com/watch?v=7G4OkjgTWIQ %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/A3VnTCbIGb9GCR %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/fi0h3IGSydSnHi %}

### Capture and Callbacks in iOS
{% embed https://www.youtube.com/watch?v=MbTEz-K8iwY %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/8i2YvLHLV1fk9P %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/poFlL3zmT5U5xv %}

## Putting it All Together
The final repositories for the server and the mobile app are here:
* https://github.com/shai-almog/AppBackendServerFinal
* https://github.com/shai-almog/MyRestaurantFinal

### Communicating with the Server
{% embed https://www.youtube.com/watch?v=LUHb5fuWzJE %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/4qR23t4H8ZuzFh %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/jgkBEqrQcrBnFn %}

### Address and Validation
{% embed https://www.youtube.com/watch?v=vOcKbbW9HBM %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/ACXIm583ByAFP4 %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/3Og7WkJQ4Z2rdc %}

### Categories and Search
{% embed https://www.youtube.com/watch?v=GEG_S-dyxaM %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/GWl4XI0rnA00W6 %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/273WxkeEwHlv2W %}

## Security

### Security Basics and Certificate Pinning
{% embed https://www.youtube.com/watch?v=kjUFJro0yUQ %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/sUytQuE3pWp42M %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/ia93x4srio0C6h %}

### Storage Encryption and Misc Security Features
{% embed https://www.youtube.com/watch?v=GMnWMB_JfaQ %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/h84oBGoa0gRAXi %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/xQqDWtQvS0DnYL %}

## Maps

### Introduction and Installation
{% embed https://www.youtube.com/watch?v=HRTLnLecoMA %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/l5HQGB1pf1lncO %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/134vwKSBCOkQZA %}

### Hello World and Devices
{% embed https://www.youtube.com/watch?v=m43A68sNcvg %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/y40Zvou8vnwUIK %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/gDfLCipqLw8OJW %}

### Markers, Lightweight Overlays and Map Layout
{% embed https://www.youtube.com/watch?v=sed5OPQSfe0 %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/DJKJTh8QLc86Tj %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/bBl52ihD24Sv4Q %}

## Building from the Open Source Project Offline Without Build Servers or Plugin

### Introduction and Setup
{% embed https://www.youtube.com/watch?v=wqcM8pSOGTY %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/6uTHRsG620s4US %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/crkyBO0rniu4k1 %}

### Running the Kitchen Sink in the Simulator
{% embed https://www.youtube.com/watch?v=l1TPKuHYr9c %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/rHzxA61MW4cLOj %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/xV0vNW29e5kwoA %}

### Building a Desktop Version of the Kitchen Sink
{% embed https://www.youtube.com/watch?v=PbRbzCGQCQE %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/iLWH0wSYQWE4BP %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/fCx9jHpEUrtbTx %}

### Building an Android Native Version of the Kitchen Sink
{% embed https://www.youtube.com/watch?v=5eMvwRcDcug %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/bNt4KHg9EEHdfr %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/kYjN6cjQ4OI1cD %}

### Build an iOS Native Version of the Kitchen Sink
{% embed https://www.youtube.com/watch?v=RsVOanGYjqo %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/vA90PPZ1b5Fq1 %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/AJmuCQEvnr0Vml %}

## Performance and Memory Tuning

### What is Performance? Breaking Down the Problem
{% embed https://www.youtube.com/watch?v=x-mUTz23Cd4 %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/MtVbqXoT8MtgiW %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/4wLJK34rnzcHqN %}

### EDT, Threading, Caching and Soft References
{% embed https://www.youtube.com/watch?v=85MyytvMS9I %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/20WrwGldzEZfRX %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/ERY1prKRyRmIcf %}

### The Different Image Types and Their Impact on Performance/RAM
{% embed https://www.youtube.com/watch?v=DWifLQZyPDE %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/H7pRNfai5Thina %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/7TTDTV8OPUFw4M %}

### List, Network, Parsing and Resource File Size
{% embed https://www.youtube.com/watch?v=ZEe_hb1Lz6Y %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/HvdNpS8hFQQ5kY %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/mQcE6l4sX8XNlh %}

### Profiling on the Desktop, Using the Performance Monitor Tool
{% embed https://www.youtube.com/watch?v=BY1lMQz873g %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/ggvGjWPzSLxnZR %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/KejbO72ZN9rl9q %}

### Profiling on Devices iOS and Android
{% embed https://www.youtube.com/watch?v=YwkwqXkHGwg %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/gxeh7hfzOIJYJ %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/pwPu9vjSwT88VA %}

### Case Study: Performance Problems in the Kitchen Sink
{% embed https://www.youtube.com/watch?v=qGJaVaQ_MNY %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/cCpFRIhQzBIeI2 %}

{% embed https://www.slideshare.net/slideshow/embed_code/key/iQbTAZihTnMte5 %}