me: - Over 8 years in Mobile development - 3 years with architectural design in the cloud (Azure, AWS and Google Cloud). - CQRS system design - Latest focus: Data Science, TensorFlow and machine learning Something interesting: - Currently studying a bachelor of science - highly focused on Physics - I’ve been to North Korea
you this as an intro slide I suggest leaving. – First sign of a high-level presentation. Personally, I disagree with this statement, building native apps is easy. IF YOU KNOW HOW TO DO IT.
C# Shared App Logic in C# iOS C# UI Android C# UI Windows C# UI Shared App Logic ▪ Platform-specific UI code in C# ▪ Shared app logic code in C# ▪ Fine-grain control over the app user interface ▪ Good for apps with sophisticated UX requirements (complicated gestures, animations, design)
100% and Deliver a Fully Native App ▪ Shared UI code in C# ▪ Shared app logic code in C# ▪ Mix-and-Match the use of Xamarin.Forms with platform-specific code. ▪ Good for forms-based, apps with a lot of data entry screens ▪ Easy to learn API makes you productive immediately, without platform-specific knowledge
with the Objective-C Runtime – Ahead of Time (AOT) compiles managed code which produces a native iOS binary that can be deployed on Apple’s ARM-based processor – Apple’s iOS APIs made available through the use of bindings
with android runtime (ART) virtual machine – Android callable wrappers used by android runtime to invoke managed code – Managed callable wrappers (MCW) (generated via jar bindings) used to invoke android code – Android APIs exposed via android runtime using a bridge (wrappers setup through a JNI bride)
– Two Approaches –Platform specific and cross-platform – JS Runtime Environment used to execute JavaScript code – JSCore Runtime uses a Bridge to communicate JavaScript with operating system
Javascript Core – allows execution of javascript on the operating system – Bridge – creates communication between JSCore Runtime and native code – A react native app simply loads javascript into the JS runtime environment
threads. 1. UI Thread (main thread): native android or iOS UI rendering e.g. android measure/layout/draw happens 2. JavaScript thread: where your JS code is actually running - business logic 3. Native Modules Thread - access to platform API 3. Render Thread: used to generate OpenGL commands to draw your UI (Android 5.0)
implementation is new) - Produce truly native applications - Can achieve 95% code re-use - Have high performance - Both compile into native code - Ability to access third party components - Native embedding (React Native’s approach is lightweight and faster)
or scroll performance is bad for large lists” – facebook.io https://facebook.github.io/react- native/docs/performance.html Solution: use a FlatList or SectionList component to keep constant memory usage for any number of rows
the InteractionManager. While making the transition, we load lesser content and render the remaining content, once the transition is complete. It helped us provide a smoother experience to our users.” Good article: - https://hashnode.com/post/what-we- learned-after-using-react-native-for- a-year-civdr8zv6058l3853wqud7hqp
is simple and straight forward. - We can control navigation through view- models Cons: - Bindings are delayed in transistion, sometimes we see values change after transition completes. Prism – Stay Away - No page caching
Xamarin Traditional runs great on android – Xamarin.Forms and React Native both have draw backs. – Xamarin Traditional, Xamarin.Forms and React Native all run great on iOS
management-in-xamarin-series/ Correct memory management requires: - Implement the IDisposable interface on custom classes - Implement using statements - Use WeakReference for class-level properties - Event Handlers are correctly managed (added and removed)
Native has many options: - Remote JS Debugging – Chrome - systrace – android - Hot Reloading – keep the app running whilst changing java script - We can even use android device monitor and memory analyzer
against, or a patent claim that involves a product or service of, Facebook (or an affiliate), or a patent claim that involves the React software, then your React patent license will terminate automatically. 2. Uncertain roadmap – no enterprise support
Analytics Device Tests Crashes • Analytics Azure Mobile Engagement Azure App Service CodePush Analytics • Push Tables • Auth • Push Distribution Visual Studio Mobile Center Microsoft Confidential
- Native development - Understands what is happening behind the UI – AOT, JIT, JSCore - Correct implementation – i.e. correct memory management, performance enhancements, etc. LEARN BEST PRACTICES