چرا برنامههای بومی هنوز در سال ۲۰۲۶ اهمیت دارند
در سال ۲۰۲۶، مرزهای بین "برنامه وب" و "برنامه دسکتاپ" بیش از هر زمان دیگری محو شدهاند. با فریمورکهایی مانند Electron، Tauri و Progressive Web Apps (PWAs)، یک توسعهدهنده میتواند یک کدبیس واحد را به macOS، Windows و Linux ارسال کند. این جذاب است. این کارآمد است. و برای بسیاری از موارد استفاده (مانند Slack یا Notion)، کاملاً کافی است.
با این حال، "کافی" "عالی" نیست.
در HarborDB، ما انتخاب آگاهانهای برای ساخت یک برنامه ۱۰۰٪ بومی macOS با استفاده از Swift، SwiftUI و AppKit انجام دادیم. ما مسیر آسان پیچیدن یک برنامه React در یک کانتینر Chromium را انتخاب نکردیم. ما مسیر هنرمندی را انتخاب کردیم. در اینجا دلیل آن است که ما معتقدیم برنامههای بومی هنوز اهمیت دارند—و چرا همیشه خواهند داشت.
۱. مالیات منابع (RAM و باتری)
واضحترین تفاوت کارایی است.
معماری Electron/Web
یک برنامه Electron اساساً یک نمونه اختصاصی از Google Chrome است که به صورت محلی اجرا میشود.
- ردپای پایه RAM: ~۱۵۰MB فقط برای رندر کردن "Hello World".
- CPU: JavaScript تکرشتهای است و JIT-compiled.
- باتری: Chrome برای خوردن باتری بدنام است. هر tab (یا نمای برنامه) یک فرآیند جداگانه است.
معماری بومی (Swift)
یک برنامه بومی به کد ماشین باینری (ARM64 برای Apple Silicon) کامپایل میشود.
- ردپای پایه RAM: ~۱۵-۳۰MB.
- CPU: دسترسی مستقیم به API Metal و چندنخی از طریق Grand Central Dispatch.
- باتری: macOS به طور تهاجمی برنامههای بومی را بهینه میکند و فعالیتهای پسزمینه را به طور کارآمد معلق میکند.
برای یک ابزار پایگاه داده که ممکن است آن را تمام روز در کنار Xcode، Docker و Chrome باز نگه دارید، نمیخواستیم دلیل چرخش فنهای MacBook شما باشیم.
۲. دسترسیپذیری اختیاری نیست
دسترسیپذیری (a11y) اغلب در توسعه وب یک فکر بعدی است که نیاز به ویژگیهای دستی ARIA و تست دقیق دارد.
در اکوسیستم بومی Apple، کنترلهای UI استاندارد (دکمهها، لیستها، فیلدهای متنی) با پشتیبانی VoiceOver داخلی ارائه میشوند.
- ساختار معنایی: سیستمعامل سلسله مراتب نماهای شما را درک میکند.
- ناوبری: ناوبری صفحهکلید به طور خودکار از استانداردهای سیستم پیروی میکند.
- کنتراست و نوع پویا: برنامههای بومی فوراً تنظیمات اندازه فونت سراسری کاربر را رعایت میکنند.
با ساخت بومی، HarborDB بدون نیاز به "پیادهسازی مجدد" دسترسیپذیری، توسط توسعهدهندگان با نقص بینایی از جعبه خارج قابل استفاده است.
۳. یکپارچهسازی عمیق سیستم
یک برنامه بومی فقط روی کامپیوتر شما زندگی نمیکند؛ با آن زندگی میکند.
منوی Services
متن را در هر برنامهای انتخاب کنید -> کلیک راست -> Services -> "پرسوجو در HarborDB". این در AppKit بیاهمیت است، در یک برنامه وب غیرممکن است.
Shortcuts و اتوماسیون
HarborDB تعاریف intent را به برنامه Shortcuts expose میکند. میتوانید یک گردش کار بسازید:
- "دریافت آخرین پشتیبان از S3"
- "Unzip"
- "وارد کردن به HarborDB"
- "اجرای پرسوجو" همه خودکار، همه بومی.
Spotlight
برنامههای بومی میتوانند محتوای خود را ایندکس کنند. میتوانید "UserTable schema" را در Spotlight جستجو کنید و مستقیماً به آن تعریف جدول در HarborDB بپرید.
۴. "دره عجیب" رابط کاربری
برنامههای وب میتوانند UI بومی را تقلید کنند، اما اغلب به "دره عجیب" میافتند—چیزی کمی غیرعادی احساس میشود.
- فیزیک اسکرول: iOS و macOS منحنیهای اسکرول اینرسی بسیار خاصی دارند ("کشش لاستیکی"). پیادهسازیهای وب اغلب سعی میکنند این را با JavaScript شبیهسازی کنند، اما به ندرت کامل احساس میشود.
- مدیریت پنجرهها: برنامههای بومی چندین پنجره، tab و نماهای تقسیمشده را به روشی استاندارد مدیریت میکنند.
- کلیدهای میانبر: Cmd+comma برای Preferences. Cmd+H برای مخفی کردن. میانبرهای استاندارد ویرایش متن (Option+Left/Right). اینها حافظه عضلانی برای کاربران Mac هستند.
۵. امنیت و Sandboxing
برنامههای بومی توزیع شده از طریق Mac App Store در یک Sandbox اجرای دقیق اجرا میشوند.
- آنها نمیتوانند فایلهای دلخواه را بدون اجازه شما بخوانند (Powerbox).
- آنها نمیتوانند صفحه یا کلیدهای شما را بدون رضایت صریح سیستم ضبط کنند.
- آنها توسط Apple code-signed و notarized شدهاند.
برنامههای وب معمولاً با محدودیتهای کمتری اجرا میشوند یا برعکس، در یک sandbox مرورگر گیر میکنند که دسترسی به سیستم فایل را کاملاً محدود میکند (که نیاز به wrapper Electron را ایجاب میکند که اغلب مجوز بیش از حد میخواهد).
۶. تجربه توسعهدهنده (SwiftUI)
از دیدگاه یک توسعهدهنده، SwiftUI بالغ شده است. ایجاد یک لیست performant از ۱۰۰,۰۰۰ آیتم در DOM وب پیچیده است (اسکرول مجازی، بازیافت). در SwiftUI:
List(items) { item in
ItemRow(item: item)
}
سیستم مجازیسازی، مدیریت حافظه و عملکرد اسکرول را مدیریت میکند. ما میتوانیم زمان خود را صرف ساخت ویژگیها کنیم، نه جنگیدن با موتور رندر.
نتیجهگیری
ما نمیگوییم برنامههای وب بد هستند. برای ابزارهای مشارکتی مانند Figma، وب پلتفرم کامل است. اما برای یک ابزار utility با کارایی بالا مانند یک Database Client—جایی که با میلیونها ردیف، پرسوجوهای پیچیده و فایلهای محلی سروکار دارید—قدرت خام و یکپارچهسازی یک برنامه بومی معمولاً برنده است.
HarborDB نامه عشق ما به Mac است. به باتری، حافظه و گردش کار شما احترام میگذارد. به همین دلیل است که بومی اهمیت دارد.