Developers often find it difficult to choose betweenFluttervsReact Native. Both have been created by the current tech giants of the world,FacebookandGoogle.
But the question of what to use to create these apps has been around for a while.
Flutter
is an open-source UI framework developed by Google in 2017 that aims to design cross-platform apps to run on mobile, Windows, macOS, and Linux as well as on the web. Flutter’s framework is built upon Dart. A lot of big companies like Alibaba, Philips Hue, Hamilton, etc., choose Flutter for development. Moreover, Google frequently provides updates for Flutter, improving its performance with each update.
Advantages of using Flutter
Great UI
Has a number of widgets
Apps are faster
Helps build web apps
Well-structured documentation and community
Helps replicate and create the same UI for different devices
Disadvantages of Flutter
Not native
Apps are larger
Has a limited set of tools
React Native
Facebook developed React Native in 2015. It is an open-source framework that is based on JavaScript. It also provides a similar feature, using the same codebase to create cross-platform apps, thus eliminating the need to compile other technologies for creating mobile apps. Skype, Instagram, Uber Eats, etc., depends upon React Native for development.
Advantages of using React Native
Uses JavaScript
Can create apps for multiple platforms using a single codebase
Understands the importance of code reusability and promotes it
Growing and active community
Helps in accelerating coding time
Disadvantages of using React Native
Not native
Does not provide innovative, out-of-the-box components
Limited choices
Abandoned libraries and packages
UI can be hampered easily and needs to undergo vigorousUI testing
Larger apps
Differences between Flutter vs React Native
React Native and Flutter are amazing choices for developing a cross-platform application, however, they share several differences which make them unique from each other.
One major difference is the programming languages both frameworks use. React Native is based on JavaScript and uses JSX. However, Flutter uses Dart programming language.
The architecture for both frameworks differs. Flutter uses a 2D graphic rendering library, Skia, whereas, React Native uses the Flux architecture, which also requires JavaScript bridging. Here, JavaScript bridging is necessary for React Native to allow JavaScript and Native code to interact with each other. However, there is no programming bridge in Flutter.
FlutterandReact Nativedocumentation guides are very good. However, Flutter shares more organized and structured documentation. React Native documentation is poorly maintained because it depends heavily on third-party libraries.
Installing Flutter requires you to download the binary from GitHub and also to set up the environment variables on your system. On the other hand, React Native is installed using node package manager (NPM) with one command on your terminal.
Flutter relies on its developed widgets for customization, whereas React Native incorporates third-party customization components. Therefore, flutter offers more compatibility. Moreover, Flutter development is solely constructed upon Widgets, whereas React Native uses JSX.
React Native has better support for 3D, whereas, Flutter does not support 3D.
Conclusion :
This blog explains the reasons behind the great popularity of the two emerging frameworks Flutter and React Native, for creating cross-platform applications. Flutter and Native solve the issue of creating separate code for native platforms like Android and iOS. Now, you can create an application for all the platforms using entirely the same code.
Moreover, picking the best framework for yourself depends upon your experience, requirements, and the business needs of your project. If you’re already aware of the JavaScript programming language, then there’s no doubt that React Native is a good choice. However, if you’re targeting a highly stable and fast performance, Flutter has several advantages over React Native.
Flutter 3.10 introduces Impeller in iOS apps by default. So these iOS apps will have less jank and better consistent performance. And for Android, Impeller is in the development phase. But we should know what Impeller is.
Impeller is a new renderer within Flutter’s engine. Until now, Flutter has been using Skia. Skia has built-in rendering features which can be used for various devices. But Skia is not always optimized solution for Flutter’s needs.
If we had a static set of shaders, we could asynchronously compile them on program startup, so that by the time the application runs an animation we can use this static set and not stutter while we prepare a new one.
Medium term we could also determine what specialized shaders we would want to use in each scene, and compile them in the background so that the next time, if all the specialized shaders we would want to use are ready, we could just use them. That way we get the long-term sustained performance benefits of specialized shaders and the short-term smooth start performance benefits of a static shader set.
Yes, our main goal is to eliminate jank or any stuttering that’s happening inside your app. But first, we should know what is Renderer.
Renderer software helps to translate the code into the pixels that are visible on the screen.
Whenever we build any widget into the Flutter that goes into some steps like Widget Tree -> Element Tree -> Render Object Tree.
But what happened after that? We will go step by step.
Display List— Render objects contain the instruction for how to actually layout and how that widget should be painted, in the form of instructions, and those instructions are given to the engine as a simple command, which is called Display List. Now an engine will decide whether the widget should be rendered either usingImpellerorSkia.
2.Render Pipelines— Render Pipelines that can be used to render everything given in the Display List.
3.Shader— A Shader is nothing but a small piece of code that gets executed on the graphics device.
4.Rasterization— Shaders take the vertices (say for ex. Flutter Logo) and it will move them on the screen where exactly we want to draw it. This process will iterate through all the given triangles of this Flutter Logo(Ex. Fig.1). For each vertex into say triangle of any image, we figure out the specific pixels that are inside it, and this is called rasterization.
ThoseShadersandRender Pipelineneed compilation to get instructed by the GPU so that GPU can execute it.
AND THIS COMPILATION PROCESS IS VERY EXPENSIVE.
And that’s how Impeller comes into the picture. Let’s discuss this issue in detail.
Shader Compilation Jank Issue —We know thatShaders are the low-level code given to GPU to draw UI on screen.
Skia compiles and generates these shaders(at runtime)when running app for the first time. The generation of shaders requires quite a bit of time(approx. 200ms or more depending on the situation) and this causes the frame, which can’t be rendered within 16ms to jank. This jank is calledshader-compilation-jank.
First, we will see how exactly Impeller Architecture works,
Now let’s take this Display List and draw it using Impeller.
Impeller Architecture
1.Aiks— The Display List operations are dispatched to Aiks. Aiks is the topmost layer of Impeller and it mainly contains the canvas drawing API.
2.Entity— Aiks takes the higher level commands from the DisplayList and translates them into the simpler self-contained drawing operations called Entities.
3.Contents of Entity— These are the Content Objects of the Entity, and it contains the actual GPU instructions need to draw the Entity.
4.Hardware Abstraction Layer [HAL]— Impeller needs some kind of translation layer by which it can communicate with the GPU, which called as Hardware Abstraction Layer. Render Pipelines contain the Shaders, and each Content of Entity uses the HAL to draw itself by giving instructions to GPU to render these Shaders. This HAL talks to the graphics driver through various standard graphics APIs like Metal on iOS and Vulcan on Android. And then this is how the resulting texture gets displayed on the screen.
Impeller generates and compiles all necessary Shaders (ahead of time) when we build the Flutter Engine. Therefore apps running on Impeller will have a predefined set of Shaders they need, and the shaders can be used without introducing jank into animations. This operation can be done by using Impellerlc Shader Compiler.
Impellerlc Shader Compiler —Impeller has a set of handwritten shaders compiled in advance. Impeller precompiles asmaller, simpler set of shadersat Engine build time so they don’t compile at runtime.
After a preview period since January 2023, Impeller is now on-by-default on iOS in a stable branch.Android up next.
Here, I have takenthisexample and tried to run it from the IDE (Android Studio).
Pre-Impeller build
Can you see that, the app got stuck at a very early stage of the app run.
Now as perthis, to see what direction Android support will take, experiment with Impeller in the 3.7 or later stable release, I enabled Impeller for Android and tried to run the same app from scratch. And got the below observations.
Post-Impeller build
Here, the animation runs smoothly after enabling Impeller.
Hope you enjoyed this article!
Here to make the community stronger by sharing our knowledge.Follow meandmy teamto stay updated on the latest and greatest in the web & mobile tech world.
Before we get started, some transparency about my experience with Flutter.
I am a web developer with 7 years experience in advanced java script + react. Before, I spent 10 years developing windows applications using c++. Yes, i’m a real computer nerd.
A year ago, I started working on a project that had to be cross platform (Android, iOS, Web)
As a JavaScript developer, I developed mobile apps in the past with Android Studio + JAVA that were based on a hybrid WebView. I wanted to get to the next level and build native mobile apps, and learning Kotlin + Swift seemed too complicated.
I started developing with Expo + React Native, but at a early stage I realized Expo has a glass ceiling when it comes to high level features.
I kept reading awesome things about Flutter, and one day while I was at the pool with my son, I decided to jump into the water. Not the pool water, the Flutter water!
With RN (React Native) it took me about 2 months to develop a cross platform sorted list (vertical re-orderable list with drag and drop)
So that’s the first thing I tried with flutter, and it worked pretty great out of the box!
So I decided to start the project with Flutter, and with very little experience in flutter and Dart, everything really ticked amazingly, and I was in love 💕with my new framework.
I can’t even begin to describe how great the Flutter framework is! You get tons of GUI widgets (Components if you are coming from React) That work great and are super easy to work with. Almost every customization you can think of, it’s there! And the documentation from the flutter team athttps://flutter.dev/is excellent. They have short videos for almost every widget in the framework. If you are looking for advanced tutorials, there are tons on youtube. The flutter community has grown very big, and you can find answers instantly on StackoverFlow and videos for every question you have.
My app, developed with Flutter
The developer experience is really top shelf, and the Flutter IDE for VS code is amazing, and you debug super fast with the “hot reload” feature that enables you see to see changes immediately without building again. Flutter is used with Dart, which was developed by Google, and I really love it. Everything in the language just seems so simple and intuitive, and things just make sense to me. I feel like I am using an advanced version of Javascript + TypeScript.
While Dart is a real smooth transition from JavaScript, the Flutter Widget tree takes a while to gets used to. When you see Flutter code for the first time, at least when coming from Javascript or React, you get really confused. There is definitely a learning curve, but as an experienced programmer after a few tutorials I was up and running. And when you get used to it, it’s super powerful and dynamic.
And, of-course, it’s cross platform! While I used it for the Web, Android, and iOS, it also supports Windows, Linux, and MAC! I think Flutter is a game changer in this aspect, because it means that much smaller teams can get apps to the market super fast, and reach a lot of users with support for nearly every device. There are other platforms that claim to do the same, but Flutter is the real deal.
But, things ticked a lot better on mobile than on web. That being said, I still have to say that flutter web is still great, but in my experience just not yet perfect. I am still using it now in production to run my website, and the website looks and feels awesome! But, I did find some difficulties with developing for the web, and I will share them with you at the article.
TEXT IN A FLUTTER WEBSITE IS NOT REAL TEXT 😰
You are reading through this article, and all of a sudden you remember of a sentence you want to copy and paste and send to a friend. What do you do? You simply click ctrl+f, you highlight the text, copy it, and paste on any app you desire. With Flutter web, none of these options are available, because what gets rendered on the screen is not really text, it’s actually an image. So you can’t search in it, you can’t highlight it, and you can’t copy it.
And you also don’t have a built-in browser spell check. Which means that users cannot see if the text they are typing has typos. This might seem as something small to some of you, but it’s actually what bothers me about Flutter web the most. Web users today feel free to type a lot because they know the browser has their back and will fix their typos and show them the nice red underline when they misspell. Also, developing a spell checker as a developer is very hard, especially when your users might type not only in English. There is an open Github Issue for this, but it’s on P4 which means it might take a while before it gets resolved. Regarding the text search feature, this is something that you can develop on your own, if your app has a search feature. But it won’t work for you out of the box.
Users today expect sites to load up immediately, especially on good internet connections. You see a link, you press on it, and you want to something in less than a second. If you don’t get it, you go to the next site. Everything happens super fast. But websites created with flutter, after optimization, take about 3–5 seconds to load, until you see the complete page. If you develop a nice loader (Which you can display using JAVASCRIPT / HTML before the Flutter widgets are loaded) it’s actually not that bad. This is what I did. But if your users use your app or website a lot, the slow loading time will be a bad user experience for them.
My website load
The website feels slow at times 😩
Well, my wife always claims I am super slow. So who am I to complain?
When developing for the web with Flutter, your web app feels high end, and almost all Flutter widgets that look great on the mobile, also look great on the web. They are animated, they are sharp, and generally look great. But, my website feels sluggish at times. Buttons can have delayed response, and also the animations can become slower. Overall, even though a website developed withFlutter can really look amazing, it feels less performant than pure HTML / JAVASCRIPT
UP and down Arrows don’t scroll the page
The keyboard is always faster than the mouse, and users press up and down all the time to scroll the page. Out of the box, this does not work with flutter. Pressing up and down has no effect on the scrollbar. I am assuming you can write code to fix it (Flutter has an awesome widget called GestureDetector) but it doesn’t work out of the box.
SEO
While i’m not an SEO expert, i’m not sure that web engines know how to parse content from Flutter web, espceially due to the fact that it’s not real text. Since Flutter is actually from GOOGLE which is a search company, it stands to reason that this will be solved in the near future, and Google will know how to parse Flutter content.
THE VERDICT
So, Flutter web is obviously not yet mature, and your web users won’t get the best experience out of the box if you use Flutter. While some of the things discussed here can be solved with some custom development, the investment might not be worth it.
So should you develop a website with Flutter in 2023? If you need only a website without mobile apps, the answer is obviously no. There are other Frameworks that are a lot more mature and advanced for the web than Flutter.
But if you are developing an app that needs to be cross platform, the amount of work you will save from using just one codebase is incredible and might be worth it. It really depends on what are your most important platforms and when is your release date. If most of your users will come from the web, I will definitely advise at this point to use some other framework for your website, and Flutter for your mobile apps.
If you are aiming mostly for Mobile users and you are at a stage where you want to get to the market fast, I would advise sticking with Flutter web. Some advanced users might complain and won’t like the user experience, but there is no doubt that the website design will look great and also the animations (Hoping your users have good computers).
Also, the Flutter team are working on improvements all the time, and there is a good chance that a year from now some of the issues mentioned here will be solved. Developing new apps and marketing them takes a while, so it might be worth to be patient. BUT at the same time, when marketing new apps, the user experience must be great out of the box so people will come back. And when they don’t have a spell check and can’t search text, they might be moving to the next alternative.
BIG THANKS TO THE FLUTTER TEAM!
Google really developed something amazing here, and in a few years from now, Flutter can become the most used frontend framework on all platforms, and startups will have their ideas out there super fast.
I can’t really explain how great Flutter is, you need to experience it for yourself to know what I am talking about. So, really, thank you for every person in the Flutter development team, you really developed something great here!
And also a big thank you to Johannes Milke from heyflutter.com, he has some great tutorials on youtube for Flutter! I really learned a lot from watching his videos. (Links are below)
To view my to do list app developed with Flutter, see:
Flutter 대신 Flutter Markup Language를 사용하는 이유는 무엇입니까?
짧은 대답은 그렇지 않을 것입니다.Flutter Markup Language는 Flutter를 대체하기 위해 설계된 것이 아니라 기술적 배경에 관계없이 모든 플랫폼에서 실행할 수 있고, 컴파일되지 않고 해석되고, 빌드하기 쉽고, 배포하기 쉬운 고품질 애플리케이션을 쉽게 빌드할 수 있는 도구입니다.
FML은 Flutter가 많은 시간, 노력 및 지식 없이는 채우지 못하는 일부 사용 사례를 다룹니다.뿐만 아니라 전체 애플리케이션, 프로토타입 등을 구축할 수 있는 상당한 시간 절약 기능을 제공합니다.이 기사에서는 FML이 개발된 이유와 FML이 해결하는 비즈니스 문제에 대해 설명하고 논의합니다.
FML이 해결하기 위해 구축된 문제의 배경과 세부 정보에 들어가기 전에
Flutter Markup Language의 TLDR 사용 사례는 다음과 같습니다.
OTA(Over-The-Air), 모든 플랫폼에서 동시에 실시간으로 즉각적인 애플리케이션 업데이트 및 배포.표준 개발 파이프라인이 필요하지 않습니다.개별 장치 및 플랫폼에 대해 여러 환경 또는 코드 기반을 관리할 필요가 없습니다.
모든 플랫폼에서 실시간 통역 언어.일반적으로 웹 및 html용으로 예약된 이 기능은 위에서 언급한 대로 즉각적인 업데이트를 허용하며 실시간 FML 삽입, 위젯 조작 등을 포함합니다.
완벽하게 작동하는 크로스 플랫폼 애플리케이션 및 프로토타입을 만들 때 속도가 훨씬 빨라집니다.이를 통해 개발 비용을 크게 절감하고 개념 증명 및 프로토타입 애플리케이션을 생산에 즉시 활용할 수 있습니다.
응용 프로그램을 생성, 업데이트 또는 편집하는 데 개발 환경이 필요하지 않습니다.이를 통해 누구나 IDE를 설정하고 SDK를 다운로드하는 오버헤드 없이 애플리케이션과 해당 구성 요소를 빠르게 수정하고 생성할 수 있습니다.
모든 플랫폼에서 작동하는 사람이 읽을 수 있는 단일 페이지를 만드는 기능.단일 코드베이스 교차 플랫폼 애플리케이션, 관리 단순성 및 즉각적인 모든 플랫폼 업데이트를 허용합니다.
쉽게 이해할 수 있는 구문과 얕은 학습 곡선을통해 누구나 사전 프로그래밍 경험 없이도 새로운 FML 템플릿과 복잡한 응용 프로그램을 빠르게 이해, 편집, 업데이트 및 생성 할 수 있습니다.
FML은 기업 수준의 애플리케이션 개발에서 많은 성공을 거두었습니다.크로스 플랫폼 개발을 위한 추가 비용 없이 단일 플랫폼 애플리케이션으로 개발 일정과 비용이 크게 줄었습니다.
원래의 비즈니스 문제와 모든 것이 시작된 곳…
Flutter Markup Language의 출현은 플래시의 죽음과 함께 시작되었습니다.그 개념은 여러 플랫폼에서 검사 응용 프로그램을 신속하게 구축하기 위해 대규모 산업 호스트 간에 내부적으로 사용된 유사한 마크업 언어를 대체하기 위해 만들어졌습니다.Flutter Markup 언어의 기술 책임자는 10년 동안 이 소프트웨어를 만들고 전 세계 여러 공장과 기업에 배포했습니다.
초기 엔진의 목표와해결해야 할 비즈니스 문제는 다음과 같습니다.
이러한 기업에서 동일한 방식으로 사용했던 모든 플랫폼에서 작동하는 검사 애플리케이션을 보유하십시오.
IT 전문가와 엔지니어는 심도 있는 프로그래밍 지식, 개발 환경 또는 일반적으로 개발 주기와 함께 제공되는 기타 오버헤드 없이 이러한 검사 애플리케이션을 편집할 수 있습니다.
수행되는 모든 업데이트는 즉각적이고 OTA(Over-The-Air)여야 하며 모든 장치에서 균일해야 합니다.이것은 중단 시간을 최소화하고 엔터프라이즈 환경의 끊임없이 변화하는 매개변수에 적응하도록 설계되었습니다.
모든 변경 사항은 컴파일, 설치 또는 일반 개발 파이프라인을 거치지 않고 즉시 모든 장치에 적용되어야 합니다.
마지막으로 새 응용 프로그램을 만들고 기존 응용 프로그램을 편집하는 것이 빨라야 합니다.이는 사내 팀이 자신의 애플리케이션을 편집하고 업데이트할 수 있는 능력 외에도 막대한 비용 절감으로 이어집니다.
Flutter 기반 엔진의 알파 단계가 로프를 통과하고 개발 팀이 pre-flutter 시스템의 기본 기능을 충족하는지 확인한 후 원래 범위를 벗어나는 성능과 기능이 크게 향상된 엔진을 만들었습니다. , 그러나 형식은 단순히 현대 응용 프로그램 구축이 요구하는 사용 용이성과 확장성을 충족하지 못했습니다.클라이언트 요청을 통해 새로운 문제가 제시되었을 때 원래의 flutter 엔진이 처리할 수 없었던 새로운 기능을 계속해서 제공합니다.재검토가 필요한 이 원래 반복의 주요 단점은 다음과 같습니다.
원래 엔진 잠금 데이터 및 응용 프로그램은 현재 환경 외부에서 사용되지 않는 매우 특정한 수행 방식으로 흐릅니다.기본적으로 규정된 방식으로 단일 유형의 애플리케이션을 생성하도록 설계되었습니다.
원래 엔진의 규칙과 애드온은 모든 예외, 지나치게 구체적인 위젯, 위젯과 기능이 보다 직관적으로 함께 작동하도록 허용하는 대신 특정 구멍을 패치하는 끝없는 속성을 암기하는 것을 너무 어렵게 만들었습니다.
원래 엔진의 UI는 제한적이고 반응이 없으며 매우 산업적인 미학에 갇혀 있었습니다.시스템의 기본 동작이 아닌 UI를 구축하려면 상당한 사전 고려와 테스트가 필요했습니다.
비검사 기반 애플리케이션을 생성하는 기능은 표준 양식/양식 필드 템플릿에서 벗어날 때 매우 제한적이고 복잡했습니다.
이러한 모든 문제를 파악한 개발팀은 Flutter Markup Language를 탄생시킨 이 오래된 프레임워크를 완전히 재구축, 재설계 및 재고하기 시작했습니다.
Flutter 마크업 언어의 시작
이 시점에서 Flutter 마크업 언어는 원래의 기본 디자인 사양을 상속하여 해석된 단일 코드베이스로 완벽하게 작동하는 크로스 플랫폼 애플리케이션을 만들 수 있습니다.이를 통해 온라인과 오프라인 모두에서 앱 스토어 및 데스크톱 애플리케이션 내에서 컴파일되지 않은 애플리케이션 업데이트, 즉각적인 롤아웃 및 OTA 업데이트가 가능합니다.이러한 개선에도 불구하고 대부분의 애플리케이션 빌더의 요구 사항을 충족하려면 추가 목표를 충족해야 했습니다.
Flutter Markup Language의 주요 추가 목표는 다음과 같습니다.
이전 반복은 매우 특정한 방식으로 작동하는 건물 검사 소프트웨어로 제한되었지만 FML은 모든 장치에서 모든 응용 프로그램을 빌드할 수 있어야 합니다.
FML은 모든 데이터 소스, 하드웨어 또는 네트워크에 연결할 수 있어야 하며 FML 애플리케이션 내의 모든 구조에서 해당 데이터 소스를 활용할 수 있어야 합니다.
FML은 개발자가 적합하다고 생각하는 방식으로 온라인과 오프라인 모두에서 자체 데이터 흐름, 탐색 및 사용자 흐름을 처리할 수 있어야 합니다.
FML은 직관적이고 사용하기 쉬우며 일반적인 규칙과 원칙을 따라야 합니다.
FML 위젯은 직관적인 방식으로 함께 작동하고 비제한적이어서 사용자가 오류를 일으킬 수 있는 실수를 저지를 가능성을 제한해야 합니다.
FML은 모든 하드웨어를 활용하여 모든 장치에서 수행되어야 합니다.
간단하고 강력한 방식으로 최신 데이터 바인딩 기술을 구현합니다.
엔터프라이즈 클라이언트 및 모든 유형의 애플리케이션에 대한 광범위한 테스트 및 설계를 통해 이러한 목표를 달성하고 초과 달성했습니다.상당한 개선 프로세스와 현장 테스트를 거친 후 Flutter Markup Language가 마침내 공개 베타 버전으로 출시되었습니다.
Flutter Markup Language가 제공하는 기능
초기 릴리스에서 Flutter Markup 언어는 전반적으로 약 3년 동안 Flutter에서 현실적으로 개발되었습니다.Flutter와 Flash 모두에서 이전 소프트웨어의 변형을 계산하면 Flutter Markup Language는 10년 이상의 개발, 테스트 및 개선 기간을 거쳤습니다.이 대규모 수명 주기를 통해 개발 팀은 현장에서 이러한 기능과 개념을 테스트하면서 다양한 기능을 개선, 테스트, 설계 및 재설계할 수 있었습니다.
Flutter에 비해 FML이 제공하는 이점의 대부분은 (컴파일되지 않은) 해석된 언어라는 측면과 사용 및 이해하기 매우 간단한 마크업 언어라는 측면에서 비롯됩니다.FML에 대해 자세히 알아보려면Wiki또는코드 베이스를방문하십시오 .높은 수준의 이점에 대해 이야기하기 위해 이전 단락에서보다 각 포인트에 대해 조금 더 자세히 알아볼 수 있습니다.
무컴파일 롤아웃 및 멀티플랫폼 인스턴트 배포
FML을 제쳐두고 있는 첫 번째이자 가장 눈에 띄는 기능 중 하나는 컴파일된 언어가 아닌 해석된 언어로 사용된다는 것입니다.이를 통해 다양한 사용 사례가 가능하며가장 눈에 띄는 것은 모든 앱 스토어 또는 OS 내에서 즉각적인 배포입니다.FlutterMarkup Language 엔진은 일단 로드되면 개발자가 엔드포인트를 제공합니다.이 끝점은 FML 템플릿을 가져오고 해석하여 실시간으로 구축합니다.
프로덕션 애플리케이션 내에서 실시간 OTA(Over-The-Air) 업데이트
컴파일되지 않고 해석되는 기능인 FML은 모든 플랫폼에서 동시에 실시간 업데이트를 허용합니다.FML의 초기 사용 사례에서는 여러 장치에서 실행되는 단일 응용 프로그램을 필요에 따라 실행하는 모든 장치에서 실시간으로 업데이트할 수 있다는 점이 중요했습니다.이를 통해 반복적인 디자인, 사용자 피드백에 대한 신속한 응답 등을 포함한 많은 이점을 얻을 수 있습니다.
완전히 작동하는 애플리케이션에 대한 개발 속도가 훨씬 빨라짐
FML의 가장 큰 과제 중 하나는 개발자가 구현해야 하는 일반적으로 복잡한 모든 시스템을 포함하는 단순화된 시스템을 만들고 애플리케이션 구축 요구의 95% 이상에 매우 유용하게 만드는 것이었습니다.FML을 사용한 개발 시간의 대부분은 모든 플랫폼에서 간단하고 예측 가능하게 사용할 수 있는 시스템을 만드는 것이었습니다.FML을 사용하는 개발자는 단순히 단일 위젯을 사용하고 보는 반면 인터프리터는 상태 관리, 플랫폼 특정성, 데이터 유형 및 사용 등에 대한 모든 논리를 처리합니다.
IDE 없는 스크립팅
모든 FML 파일은 간단한 텍스트 편집기에서 업데이트할 수 있습니다.코딩을 시작하기 전에 개발자가 환경을 설정하는 데 사용하는 SDK, IDE 또는 기타 일반적인 오버헤드를 다운로드할 필요가 없습니다.이를 통해 누구나 개발 환경을 설정하고 관리할 필요 없이 FML 애플리케이션 내에서 무엇이든 즉시 편집하고 업데이트할 수 있습니다.
온라인 및 오프라인 데이터 처리
FML은 양식의 복잡성, 온라인 및 오프라인 기능, 연결 처리를 단순화했습니다.FML은 이를 보다 자동화된 방식으로 처리하기 위해 다양한 리소스를 사용하지만 그 중 하나가 POSTMASTER입니다.이 서비스를 사용하면 연결이 끊길 수 있으며 복구되면 저장하고 게시를 계속 시도합니다.
간단한 데이터 소스 통합
xml 또는 json 형식의 여러 데이터 소스에 연결하는 것이 FML을 사용하여 간소화되었습니다.사용자는 REST 호출, NFC, CAMERA 등과 같은 하드웨어 특정 데이터에 쉽게 연결하고 바인딩할 수 있습니다.플랫폼 간 데이터 구조 및 액세스의 모든 특이성이 개발자를 위해 자동으로 처리되므로 개발자는 애플리케이션의 기능과 UI에 집중할 수 있습니다.
저비용 학습 곡선
UI 구축의 단순화, 내장된 자동 상태 관리, 단순화된 데이터 소스 통합 및 이해하기 쉬운 구조는 모두 FML의 진입 비용을 낮고 빠르게 만듭니다.응용 프로그램 개발의 고도로 기술적인 측면은 모두 인터프리터에 의해 처리되었으며 사용하기 쉽지만 강력한 FML 위젯으로 추상화되었습니다.이를 통해 몇 분 만에 애플리케이션을 구축하고 편집할 수 있습니다.
크로스 플랫폼 단일 코드베이스
크로스 플랫폼 애플리케이션 개발이 그 어느 때보다 쉬워졌습니다.FML 위젯은 모든 플랫폼에서 반응이 빠르고 예측 가능합니다.즉, 단일 FML 템플릿과 엔드포인트를 필요한 모든 플랫폼에 사용할 수 있습니다.데스크톱 애플리케이션, iOS, Android 또는 웹이든 상관 없습니다.또한 해당 단일 파일을 업데이트하면 모든 장치의 모든 응용 프로그램이 균일하게 즉시 업데이트됩니다.
고성능 애플리케이션
FML 인터프리터는 Flutter에 내장되어 있으며 이는 모든 장치에 대한 네이티브 컴파일을 의미합니다.해석된 언어는 거의 항상 잘 최적화된 기본 응용 프로그램보다 성능이 떨어지지만 최신 하드웨어를 사용하면 FML이 모든 플랫폼에서 원활하고 성능 있게 실행될 수 있습니다.
유연하고 반응이 빠른 레이아웃
FML의 레이아웃은 일반 규칙 집합, 끝없는 사용자 지정 옵션 및 단일 파일에서 전체 응용 프로그램에 대한 변경을 허용하는 강력한 THEME 레이어로 표준화됩니다.개발자는 최소한의 노력으로 모든 화면 크기 또는 플랫폼에 맞는 응답성이 뛰어나고 유연한 애플리케이션을 구축할 수 있습니다.
이 주기의 끝에서 Flutter Markup Language의 공개 릴리스와 함께 대중 금융 포털에서 전 세계의 제조 공장 및 기계와 조정되는 검사 시스템에 이르기까지 응용 프로그램을 개발하는 데 Flutter Markup Language가 사용되었습니다.주요 기업은 Goodyear 고무 및 타이어와 같은 FML을 채택했으며 FML이 제공할 수 있는 비용 이점 및 시간 절약 측면을 확인하면서 더 많은 기업이 테이블에 등장하고 있습니다.
모든 도구와 마찬가지로 FML은 Flutter와 같은 프레임워크에 비해 장단점이 있으며 Flutter 개발자 팀을 포함한 모든 팀에 막대한 비용 및 시간 절약을 제공하는 데 활용할 수 있습니다.