Кроссплатформенные приложения для linux и windows для

Фреймворки и библиотеки для кроссплатформенной разработки десктопных программ

Время на прочтение
7 мин

Количество просмотров 35K

В этой статье я расскажу вам о некоторых самых популярных фреймворках, которые помогут вам при разработке программ для компьютеров под управлением Windows/MacOS/Linux. Если вы опытный программист, то вряд ли найдете в этой статье что-то новое для себя. Она скорее для новичков, которые ищут простое решение своей проблемы — быстрое написание хорошей (на сколько это возможно) кроссплатформенной программы.

Что такое кроссплатформенная разработка?

Что вообще из себя представляет кроссплатформенная разработка? Если вам нужно, чтобы ваше приложение работало сразу на нескольких операционных системах с минимальными затратами человеко-ресурса, то скорее всего вы прибегнете именно к этому. Вы разрабатываете одну программу, пишете один код, а он запускается на всех поддерживаемых платформах. Удобно! Но стоит различать кроссплатформенность и нативность.

Если вкратце, то кроссплатформенность — это способность программного обеспечения работать с несколькими аппаратными платформами или операционными системами. Нативные программы в свою очередь пишутся для работы на определенной аппаратной или программной платформе. Из этого можно сделать вывод: если ваша программа будет работать с железом, то скорее всего даже в кроссплатформенной программе вам придется прописывать нативный функционал для конкретной платформы.

В чем же преимущество кроссплатформенной разработки? Во-первых, вам нужно задействовать меньше людей (не нужно содержать DotNet разработчика, Swift/objective C разработчика и всех к ним прилагающихся), во вторых вы охватываете большее количество устройств -> больше людей смогут пользоваться вашей программой.

Также подобный принцип не лишен недостатков — плохая нативность, оптимизация тоже будет хуже, чем у такой же программы написанной под конкретную платформу. Но иногда бывает такое, что вам очень нужно, чтобы ваше приложение поддерживало несколько платформ, но разрабатывать под каждую возможности нет. Тогда на помощь приходят уже созданные Фреймворки и технологии для разработки кроссплатформенных GUI. Вот некоторые из них:

Electron JS

Недавно я написал статью о том, как на Electron JS написать «Hello World». В комментариях поднялась дискуссия о «за и против» этой технологии. До сих пор очень многие разработчики ведут споры относительно того, стоит ли использовать Electron в своих проектах или нет. Electron JS — это JavaScript фреймворк, позволяющий вам написать полноценную программу используя Web Технологии — HTML & CSS, JS. Electron JS представляет собой движок Chromium в котором и исполняется весь ваш код. У Electron’a есть один, но достаточно серьезный недостаток — большое потребление памяти, как физической, так и оперативной. Всем давно известно, какой прожорливый Chrome, а мы на него еще своего кода хотим навесить. Но если посмотреть с другой стороны: сегодня многие популярные приложения написаны на Electron’e — Slack, Skype, Discord, VSCode, Atom, Postman, Insomnia и т.д. А с учетом непрекращающегося роста мощности компьютеров все реже приходится слышать от пользователей, что «ваш хром съел всю мою память». Высокое потребление памяти не будет играть большой роли если продукт будет хорош в своей сфере, будет грамотно написан код и распределены процессы

Официальный сайт

Плюсы

  • Использование наработок из Web

  • Просто найти (или «воспитать») специалиста

  • Качественная (и русифицированная) документация

  • Поддержка сообщества и GitHub

Минусы

  • Высокое потребление памяти (физическая и ОЗУ)

  • Легко написать плохой код

  • Плохая нативность


NW.JS

Так же как и Electron, NW.JS позволяет вам создавать кроссплатформенные приложения с использованием Web технологий. Сегодня NW.JS Спонсируется компанией Intel, и разрабатывается сообществом. NW.JS не может похвастаться таким же богатым списком проектов как Electron, но это все равно очень хороший фреймворк для создания кроссплатформенных приложений. Так же как и Electron, NW.JS тащит за собой движок Chromium и все вытекающие из него проблемы. NW.JS очень похож по своему принципу на Electron, но все-же различия есть. Могу порекомендовать вам эту статью для ознакомления.

Плюсы

  • Использование наработок из Web

  • Просто найти (или «воспитать») специалиста

  • Качественная (и русифицированная) документация

  • Поддержка сообщества и GitHub

Минусы

  • Высокое потребление памяти (физическая и ОЗУ)

  • Легко написать плохой код

  • Плохая нативность


Qt/QML

Qt — очень мощный набор инструментов для создания кроссплатформенных приложений на языке С++ и Python (а также Ruby, PHP, C# и др. но они в отличии поддерживаются сообществом). Qt уже достаточно старый фреймворк, но он продолжает активно развиваться и на нем написаны такие программы как: 2ГИС для Android, Kaspersky Internet Security, Virtual Box, Skype, VLC Media Player, Opera и другие. Известное многим линукс-юзерам окружение рабочего стола KDE тоже написано с использованием Qt. Qt имеет среду разработки — Qt Creator, которая включает в себя Qt Designer с помощью которого можно создавать графический интерфейс. Визуальное создание интерфейса позволяет легко и просто создавать интерфейс, перетаскивая различные виджеты (выпадающие списки, кнопки, переключатели) на форму. Qt имеет обширную документацию, активную поддержку сообщества и множество других преимуществ.

Официальный сайт

Плюсы

  • Визуальный редактор интерфейса

  • Огромное количество модулей в составе фреймворка

  • Поддержка большого количества языков программирования (официально только Python и C++, остальные поддерживаются сообществом) -> хорошая нативность при грамотном коде

  • Низкий порог вхождения

Минусы

  • Большой вес приложения

  • Высокая стоимость коммерческой лицензии

GTK

GTK на ряду с Qt является одной из самых популярных библиотек для кроссплатформенной разработки элементов интерфейса для X Window Systems. Разработан Gnome Foundation и GNU. С использованием этой библиотеки написаны многие окружения рабочего стола и оконные менеджеры (Gnome, xfce MATE, Cinnamon, AfterStep, Marco и многие другие), и программы, например: Chromium, FireFox, MonoDevelop, Gimp и другие. GTK написан на языке C, но существуют обертки для многих языков программирование (C, C++, Python, Java и другие). Gtk имеет конструктор для визуальной разработки интерфейсов — Glade

Официальный сайт

Плюсы

  • Поддержка большого количества языков

  • Большое и активное сообщество

  • Много популярных проектов и примеров

  • Визуальный редактор

Минусы

  • Критичных минусов обнаружено не было (если у вас есть «проблемы» с Gtk — можете написать об этом в комментарии)


Avalonia

Достаточно молодой и активно развивающийся фреймворк для кроссплатформенной разработки, разработанный Стивеном Кирком и поддерживаемый .NET Foundation и сообществом. Avalonia позволяет создавать интерфейсы на основе XAML. Сама Avalonia основана на WPF/UWP. Код пишется на языке C#. Благодаря XAML Avalonia позволяет создавать гибкие и стилизованные интерфейсы. Имеет хорошую документацию, хоть и не большое, но очень приветливое рускоязычное сообщество.

Официальный сайт

Плюсы

  • Хорошая нативность (+поддержка системных декораций)

  • Активное и приветливое сообщество, как русскоязычное, так и англоязычное (чаты, форумы)

  • Заимствование и сходство с WPF (Если вы работали с WPF вам будет легко разобраться с Авалонией, и при возникновении трудностей, код написанный для WPF скорее всего заработает у вас на авалонии)

  • Стили (стили в Авалонии имеют сходство с CSS, что упрощает написание этих самых стилей)

Минусы

  • Маленькое сообщество (хоть и приветливое, но в силу молодости проекта, еще очень немногочисленное сообщество разработчиков)

  • Маленькое количество проектов (вы можете застрять с тем, что никто не решал такую задачу, которая встала перед вами)


WxWidgets/WxPython

wxWidgets (ранее известная как wxWindows) — это кросс-платформенная библиотека инструментов с открытым исходным кодом для разработки кроссплатформенных на уровне исходного кода приложений, в частности для построения графического интерфейса пользователя (GUI).Она разработана не только для того, чтобы создавать GUI. Она также имеет набор классов для работы с графическими изображениями, HTML, XML документами, архивами, файловыми системами, процессами, подсистемами печати, мультимедиа, сетями, классы для организации многопоточности, отладки, отправки дампов и множество других инструментов. Имеет обертку для языка Python -WxPython. С использованием этой библиотеки написанны такие программы как: FileZilla, AudaCity, BitTorrent и другие.

Официальный сайт

Минусы

  • Мало современной информации в интернете

  • Не очень активное сообщество

Плюсы

  • Простое написание интерфесов

  • поддержка разных языков программирования


Tkinter

Tkinter — кросс-платформенная событийно-ориентированная графическая библиотека разработанная Гвидо ван Россумом (создатель языка Python), позволяет написать вам простой, но функциональный интерфейс для вашего проекта на Python. По сути Tkinter представляет из себя пакет для Python, предназначенный для работы с библиотекой Tk. Библиотека Tk содержит компоненты графического интерфейса пользователя (graphical user interface – GUI), написанные на языке программирования Tcl и существуют реализации для разных языков (Tkinter приведен для примера).

Официальный сайт

Минусы

  • Примитивные интерфейсы

  • Для одного языка (но непосредственно Tk существует для разных языков)

Плюсы

  • Простое написание интерфесов

  • Позволяет вам быстро написать простой GUI для вашей Python программы


UPD

  1. JavaFX: JavaFX — фреймворк для разработки кроссплатформенных десктопных приложений на Java. Он включает в себя графический интерфейс пользователя, анимацию, мультимедиа и поддержку многопоточности.

  2. Xamarin: Xamarin — фреймворк для разработки кроссплатформенных десктопных приложений на С# и .NET. Он позволяет создавать приложения, которые работают на Windows, macOS и Linux.

  3. NativeScript: NativeScript — фреймворк для разработки кроссплатформенных мобильных и десктопных приложений на JavaScript, TypeScript и Angular. Он использует нативные компоненты для создания пользовательского интерфейса и поддерживает Windows, macOS и Linux.

  4. OpenFL: OpenFL — кроссплатформенная библиотека для разработки игр и приложений на ActionScript и Haxe. Она поддерживает Windows, macOS, Linux, Android и iOS.

  5. Flutter: Flutter — фреймворк для разработки кроссплатформенных мобильных и десктопных приложений на Dart. Он использует свой собственный виджетный движок и поддерживает Windows, macOS, Linux, Android, iOS и веб.

  6. React Native: React Native — это фреймворк для разработки кроссплатформенных мобильных и десктопных приложений на JavaScript и React. Он использует нативные компоненты для создания пользовательского интерфейса и поддерживает Windows, macOS и Linux.

Итог

В этой статье я рассказал далеко не о всех фреймворках, но о самых популярных, активно поддерживаемых и подходящих для абсолютно разных проектов и задач. Призываю вас в комментариях рассказать о своем опыте работы с различными фреймворками (но только с теми, что есть в статье), о том какие плюсы и минусы вы видите в кроссплатформенной разработке?

When I originally switched from Windows to Ubuntu I was very interested in these cross-platform apps. After more than 10 years loyalty to Bill’s operating system, I had built up a trusted roster of often used software — but some of it was Windows only.

Here’s a selection of quality free software that works on both Linux and Windows machines.

VLC

cross platform apps

The media player that just works. Most of the Internet has harped on about how good VLC is for years now, despite the program remaining fairly unchanged and well….a bit plain. Don’t let that put you off — simplicity is the key for this powerhouse of a video and music player.

If you’ve got a movie to watch or an album to listen to, rest assured, regardless of operating system, VLC will run it. A lightweight, codec-rich media solution that you should already have installed.

SMPlayer

cross platform application

An alternative to VLC, SMPlayer also does a stellar job of providing smooth, simple playback of your media. A frontend for the popular MPlayer, SMPlayer offers a slightly fancier interface and an improved playlist over VLC.

Features like automatic file resuming, a video equalizer, filters, sync control and the ability to search Open Subtitles directly within the program make this a very impressive package.

Boxee [No Longer Available]

cross platform application

Justin can’t get enough of Boxee, and I’m beginning to see why. Not to be confused with the set-top box you plug into your TV (that’s the Boxee Box) Boxee is a free media centre application for your Windows, Linux or even Mac computer.

Once installed you can simply use it as a front-end for accessing your local media, or plug your PC into your TV and access everything in your living room. You could even make your own dedicated Boxee Box out of an old PC. Fancy that, the Internet has arrived on your telly!

Web & Communication

Chrome / Firefox

cross platform application

Rarely do I group such applications together — especially when there’s fanboys lurking in the shadows, but Chrome and Firefox are two awesomely cross-platform browsers.

Chrome now keeps all your bookmarks synchronized with your Google Account, meaning you can log in from either OS with all your favourites intact. The Firefox 4 Beta offers a new feature called Firefox Sync which does the same thing.

Both Firefox and Chrome perform well under Windows or Linux (I find Chrome even faster on Linux), although you’ll need to install your extensions again.

Thunderbird

cross platform

Especially useful to those who dual boot between Windows and Linux who demand a powerful email client, Thunderbird is the perfect solution. As modern Linux distributions can easily access data stored on a Windows NTFS partition, Thunderbird can be told to store all data on your Windows partition which in turn can then be accessed from a Linux environment.

This means you will never be out of sync with your email, even if you reboot your PC into another operating system. Clever, huh?

Deluge

cross platform

One of the better cross-platform BitTorrent clients out there, Deluge is available for all 3 major operating systems. It has an interface reminiscent of uTorrent, and includes support for full encryption, a remotely controllable Web UI, plugins and more.

You can even control multiple instances of Deluge across the network, making it a very powerful BitTorrent solution for those that need it. Check out our full low-down for more information.

Pidgin

cross platform

If you’re after an all-in-one instant messaging client for your PC, then give Pidgin a go. Formerly known as GAIM (way back when), Pidgin offers support for a startling amount of IM services.

These include AIM, Google Talk, ICQ, MSN and Yahoo as well as some more obscure platforms and an IRC client if you’re that way inclined. As Digsby’s not ready for Linux yet, Pidgin fills its boots nicely.

[NO LONGER WORKS] Adobe Air & Java

Technically not apps at all, Adobe Air and Java both work on Windows and Linux to provide cross-platform compatibility with a multitude of programs. As these programs use a framework, there is no need for separate Windows and Linux versions — they should just work.

With great apps like Tweetdeck at your disposal, you’re bound to find something you like. We’ve got some great Adobe Air picks right here, and more information on the Java platform here.

Office & Graphics

OpenOffice

It doesn’t have the «next-gen» interface seen in Microsoft’s latest Office suite, but OpenOffice gets the job done. For those of you with the simple demand of an Office suite that opens a multitude of file formats (including all Microsoft Office files) then look no further.

There are 5 programs included in the suite:

  • Writer — A simple yet powerful word processor.
  • Calc — A spreadsheet program.
  • Impress — A presentation application.
  • Draw — For creating diagrams and graphics.
  • Base — A database management tool.

Funnily enough, I’m using OpenOffice Writer for this very article.

GIMP

GIMP stands for GNU Image Manipulation Program, and it is the Linux equivalent of Photoshop. The interface can be tricky at first, especially if you’re used to Adobe’s efforts but there’s plenty of guides and documentation to help you on your way.

For those of you who would prefer a more Adobe-like interface from the get-go, then try GIMPShop, a hack that alters the interface to make GIMP more closely resemble Photoshop.

InkScape

cross platform apps

For vector artists on a budget, InkScape steps up to the mark. Essentially a free equivalent to Corel Draw, Adobe Illustrator and Xara X, InkScape is a community developed and driven project with versions for Windows, Linux and even Mac OS X. InkScape uses the W3C standardised Scaleable Vector Graphics format (.SVG) to save files, and as such is compatible with a wide range of advanced features.

Do you have any favourite software that works cross-platform? Maybe you’re searching for a Linux equivalent to a much loved Windows program? Get it off your chest in the comments.

Thanks to reader Robert Backlund for suggesting this article. Have you got an article you would like to see? Why not get in touch? Don’t forget MakeUseOf Answers for those tough techie questions!

#Руководства


  • 0

На C# можно создавать красивые приложения, но до недавних пор — не для всех платформ. Рассказываем, как писать одно приложение для всех ОС сразу.

 vlada_maestro / shutterstock

Евгений Кучерявый

Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.

Microsoft выпустила уже третью версию кросс-платформенного .NET Core с открытым исходным кодом, но мы до сих пор не получили инструмента для создания графических интерфейсов.

Пока есть Xamarin, который можно использовать только для Windows 10 и мобильных устройств. Но что делать тем, кто хочет создавать графические интерфейсы для Linux или Mac OS?

Тут помогут фреймворки от сторонних разработчиков.

Мне удалось найти два более-менее популярных фреймворка (оба основаны на Skia):

  1. SpaceVIL. Он привлёк меня тем, что в нём элементы GUI отрисовываются, а не берутся из API операционной системы. Поэтому приложение будет выглядеть одинаково на всех устройствах. В нём даже можно создавать собственные элементы любого вида. Однако он пока довольно сырой — об этом говорит уже то, что в официальной документации есть ошибки в инструкции для новичков.
  2. AvaloniaUI. Это более популярный и проработанный фреймворк, который позволяет создавать интерфейсы как для мобильных устройств, так и для Linux и OS X. Также в нём используется диалект XAML, что будет плюсом для тех, кто пробовал создавать приложения для Windows. В нём даже есть поддержка MVVM.

Я попробовал оба, и второй показался мне более удобным: в нём есть язык разметки, поддержка MVVM, быстрая установка, лёгкий переход с WPF. Поэтому я выбрал его.

Я буду создавать приложение в Linux Ubuntu, но эта инструкция подойдёт всем, кто использует .NET Core. Создавать приложения можно и в Visual Studio, скачав для него расширение, но так как его нет на Linux, я буду пользоваться терминалом.

Для начала клонируйте себе на компьютер этот репозиторий:

В нём находятся шаблоны для создания приложения с AvaloniaUI. Если вы не умеете пользоваться Git, то просто скачайте содержимое и распакуйте куда-нибудь на компьютере. Затем откройте консоль и введите следующую команду:

dotnet new --install [путь к скачанному репозиторию]

Она установит шаблоны для создания приложения. Чтобы проверить, добавились ли шаблоны, используйте команду:

Вы увидите список всех установленных шаблонов. Среди них должны быть Avalonia Window, Avalonia .NET Core MVVM App, Avalonia UserControl и Avalonia .NET Core App. Если они на месте, можно продолжать.

Откройте в консоли папку, в которой хотите создать проект, и введите:

Будет создано приложение с использованием MVVM. Практически вся документация по AvaloniaUI написана с использованием этого паттерна, поэтому проще будет разрабатывать на нём.

Теперь можно приступать к работе над приложением.

У вас будут созданы следующие папки

  • Assets — сюда можно загружать различные компоненты программы вроде иконок, изображений, звуков и прочего.
  • Models — эта папка предназначена для классов, которые будут выступать в роли модели.
  • ViewModels — здесь находятся классы-посредники между видом и моделью.
  • Views — все окна будут находиться здесь.

Сначала посмотрим в файл Program.cs в корневом каталоге:

using System;
using Avalonia;
using Avalonia.Logging.Serilog;
using AvaloniaMVVM.ViewModels;
using AvaloniaMVVM.Views;

namespace AvaloniaMVVM
{
	class Program
	{
    	// Initialization code. Don't use any Avalonia, third-party APIs or any
    	// SynchronizationContext-reliant code before AppMain is called: things aren't initialized
    	// yet and stuff might break.
    	public static void Main(string[] args) => BuildAvaloniaApp().Start(AppMain, args);

    	// Avalonia configuration, don't remove; also used by visual designer.
    	public static AppBuilder BuildAvaloniaApp()
        	=> AppBuilder.Configure<App>()
            	.UsePlatformDetect()
            	.LogToDebug()
            	.UseReactiveUI();

    	// Your application's entry point. Here you can initialize your MVVM framework, DI
    	// container, etc.
    	private static void AppMain(Application app, string[] args)
    	{
        	var window = new MainWindow
        	{
            	DataContext = new MainWindowViewModel(),
        	};

        	app.Run(window);
    	}
	}
}

Нас интересует метод AppMain (). В нём создаётся окно (MainWindow) с указанием DataContext (используется для привязки данных), а потом это окно запускается.

В этом методе можно определить свою логику инициализации приложения. Например, объявить экземпляр модели и передать его в конструктор MainWindowViewModel (). Однако перед этим нужно определить конструктор, который будет принимать такой аргумент.

У нас очень простое приложение, поэтому мы реализуем всю логику прямо в MainWindowViewModel.cs. Там будут необходимые свойства и методы.

Для начала нужно подключить пространство имён ReactiveUI, которое в AvaloniaUI используется для реализации паттерна MVVM:

Затем можно писать сам код:

private string _message = "";

private string _num1 = "0";
private string _num2 = "0";
private string _result = "0";

public void Click()
{
    int num1 = 0;
    int num2 = 0;
    int result = 0;
    Message = "";

    try
    {
   	 num1 = Convert.ToInt32(Num1);
   	 num2 = Convert.ToInt32(Num2);
    }
    catch(Exception e)
    {
   	 Message = "Wrong input!";
   	 Console.WriteLine(e.Message);
    }

    result = num1 + num2;

    Result = result.ToString();
}

public string Message //Так свойства используются для привязки в ReactiveUI
{
    get => _message;
    set => this.RaiseAndSetIfChanged(ref _message, value);
}

public string Num1 
{
    get => _num1; 
    set => this.RaiseAndSetIfChanged(ref _num1, value);
}


public string Num2
{
    get => _num2;
    set => this.RaiseAndSetIfChanged(ref _num2, value);
}

public string Result
{
    get => _result;
    set => this.RaiseAndSetIfChanged(ref _result, value);
}

Теперь нужно написать код интерфейса для окна в файле MainWindow.xaml:

<Window xmlns="https://github.com/avaloniaui"
   	 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   	 xmlns:vm="clr-namespace:AvaloniaMVVM.ViewModels;assembly=AvaloniaMVVM"
   	 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
   	 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
   	 mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
   	 x:Class="AvaloniaMVVM.Views.MainWindow"
   	 Icon="/Assets/avalonia-logo.ico"
   	 Title="AvaloniaMVVM">

    <Design.DataContext>
   	 <vm:MainWindowViewModel/>
    </Design.DataContext>

    <Grid>
   	 <Grid.RowDefinitions>
   		 <RowDefinition Height="1*"/>
   		 <RowDefinition Height="2*"/>
   		 <RowDefinition Height="1*"/>
   		 <RowDefinition Height="2*"/>
   		 <RowDefinition Height="1*"/>
   	 </Grid.RowDefinitions>

   	 <Grid.ColumnDefinitions>
   		 <ColumnDefinition Width="1*"/>
   		 <ColumnDefinition Width="2*"/>
   		 <ColumnDefinition Width="1*"/>
   		 <ColumnDefinition Width="2*"/>
   		 <ColumnDefinition Width="1*"/>
   		 <ColumnDefinition Width="1*"/>
   	 </Grid.ColumnDefinitions>

   	 <TextBox Text="{Binding Num1, Mode=TwoWay}" Grid.Row="1" Grid.Column="1"/>
   	 <TextBlock Text="+" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="1" Grid.Column="2"/>
   	 <TextBox Text="{Binding Num2, Mode=TwoWay}" Grid.Row="1" Grid.Column="3"/>

   	 <Button Content="=" Grid.Row="2" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center" Command="{Binding Click}"/>

   	 <TextBlock Text="{Binding Result}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="3" Grid.Column="2"/>
   	 <TextBlock Text="{Binding Message}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="Red" Grid.Row="4" Grid.Column="2"/>
    </Grid>
</Window>

Вы можете заметить, что это практически тот же XAML, который используется в WPF: тут такие же компоненты и свойства, так же используются Grid и привязка данных. Однако здесь в качестве команды можно указывать обычные методы, чего нельзя делать в WPF.

Чтобы скомпилировать и запустить приложение, введите в консоли следующую команду:

Результат должен получиться таким:

Теперь приложение можно просто скомпилировать для разных ОС — никаких дополнительных манипуляций для переноса на новую платформу не требуется.

10–15 лет назад это показалось бы извращением, но сейчас мы можем писать программы для Linux на языке, который изначально был предназначен для разработки приложений под Windows.

Жизнь можно сделать лучше!
Освойте востребованную профессию, зарабатывайте больше и получайте от работы удовольствие. А мы поможем с трудоустройством и важными для работодателей навыками.

Посмотреть курсы

10+ великолепных кроссплатформенных приложений для Windows и Linux

Когда я первоначально переключился с Windows на Ubuntu Меня очень интересовали эти кроссплатформенные приложения. После более чем 10-летней лояльности к операционной системе Билла я создал список надежных часто используемых программ, но некоторые из них были только для Windows.

Вот подборка качественного бесплатного программного обеспечения, которое работает на компьютерах с Linux и Windows.

мультимедиа

Если у вас есть фильм для просмотра или альбом для прослушивания, будьте уверены, независимо от операционной системы, VLC запустит его. Облегченное мультимедийное решение с кодеками, которое вы уже должны были установить.

SMPlayer

SMPlayer, альтернатива VLC, также делает звездную работу по обеспечению плавного и простого воспроизведения ваших медиафайлов. SMPlayer, интерфейс для популярного MPlayer, предлагает немного более изящный интерфейс и улучшенный список воспроизведения по сравнению с VLC.

Такие функции, как автоматическое возобновление файлов, эквалайзер видео, фильтры, управление синхронизацией и возможность поиска в открытых субтитрах непосредственно в программе, делают этот пакет очень впечатляющим.

Boxee [Больше не доступно]

После установки вы можете просто использовать его в качестве внешнего интерфейса для доступа к локальным медиафайлам или подключить компьютер к телевизору и получить доступ ко всему в своей гостиной. Вы даже можете сделать свой собственный Boxee Box из старого ПК. Представьте, что Интернет появился на вашем телевизоре!

Интернет и общение

Chrome / Firefox

Редко я группирую такие приложения вместе, особенно когда в тени скрываются фанаты, но Chrome и Firefox — два потрясающе кроссплатформенных браузера.

Chrome теперь сохраняет все ваши закладки. синхронизированный с вашей учетной записью Google, что означает, что вы можете войти в систему из любой ОС, сохранив все избранные. Firefox 4 Beta предлагает новую функцию под названием Firefox Sync, которая делает то же самое.

И Firefox, и Chrome хорошо работают под Windows или Linux (я считаю, что Chrome еще быстрее в Linux), хотя вам нужно будет снова установить свои расширения.

буревестник

Thunderbird — идеальное решение для тех, кто использует двойную загрузку между Windows и Linux и которым требуется мощный почтовый клиент. Так как современные дистрибутивы Linux могут легко получать доступ к данным, хранящимся в разделе Windows NTFS, Thunderbird может попросить хранить все данные в вашем разделе Windows, к которым, в свою очередь, можно получить доступ из среды Linux.

Это означает, что вы никогда не будете не синхронизированы с электронной почтой, даже если вы перезагрузите компьютер в другую операционную систему. Умно, а?

потоп

Deluge, один из лучших кроссплатформенных клиентов BitTorrent, доступен для всех трех основных операционных систем. Он имеет интерфейс, напоминающий uTorrent, и включает поддержку полного шифрования, удаленно управляемый веб-интерфейс, плагины и многое другое.

Вы даже можете управлять несколькими экземплярами Deluge по сети, что делает его очень мощным решением BitTorrent для тех, кто в этом нуждается. Ознакомьтесь с полным для получения дополнительной информации.

пиджин

Если вам нужен универсальный клиент для обмена мгновенными сообщениями для вашего ПК, тогда попробуйте Pidgin. Ранее известный как GAIM (еще в далеком прошлом), Pidgin предлагает поддержку поразительного количества IM-сервисов.

К ним относятся AIM, Google Talk, ICQ, MSN и Yahoo, а также некоторые более неясные платформы и IRC-клиент, если вы склонны к этому. Как Digsby не готов для Linux, Pidgin прекрасно загружается.

[НЕТ ДЛИННЫХ РАБОТ] Adobe Air & Java

С технической точки зрения это не приложения, а Adobe Air и Java работают на Windows и Linux, обеспечивая кроссплатформенную совместимость с множеством программ. Поскольку эти программы используют фреймворк, нет необходимости в отдельных версиях Windows и Linux — они должны просто работать.

В вашем распоряжении такие замечательные приложения, как Tweetdeck, вы обязательно найдете то, что вам нравится. У нас есть несколько отличных подборок Adobe Air прямо здесь, и больше информации о платформе Java здесь

Офис & Графика

OpenOffice

В комплект входят 5 программ:

Как ни странно, я использую OpenOffice Writer для этой самой статьи.

GIMP расшифровывается как G NU I mage M anipulation Pgram и является Linux-эквивалентом Photoshop. Поначалу интерфейс может быть сложным, особенно если вы привыкли к усилиям Adobe, но есть множество руководств и документации, которые помогут вам на вашем пути.

InkScape

У вас есть любимое программное обеспечение, которое работает кроссплатформенно? Может быть, вы ищете Linux, эквивалентный любимой программе Windows? Сними это с груди в комментариях.

Спасибо читателю Роберту Баклунду за предложение этой статьи. У вас есть статья, которую вы хотели бы увидеть? Почему бы не войти в контакт? Не забывайте ответы на эти сложные технические вопросы!

10+ великолепных кроссплатформенных приложений для Windows и Linux

Изучив нашу обязательную страницу приложений для Windows, нам пришло письмо отважного читателя MakeUseOf, предложившего составить список для пользователей Windows и Linux.

Когда я изначально перешел с Windows на Ubuntu

Я был очень заинтересован в этих кроссплатформенных приложениях. После более чем 10-летней лояльности к операционной системе Билла я создал список надежных часто используемых программ, но некоторые из них были только для Windows.

Вот выбор качественного бесплатного программного обеспечения, которое работает на и то и другое Linux и Windows машины.

мультимедиа

Медиаплеер, который просто работает. Большая часть Интернета уже много лет говорит о том, насколько хорош VLC, несмотря на то, что программа остается довольно неизменной и хорошо… немного простоватой. Не позволяйте этому оттолкнуть вас — простота — ключ к этому мощному проигрывателю видео и музыки.

Если у вас есть фильм для просмотра или альбом для прослушивания, будьте уверены, независимо от операционной системы, VLC запустит его. Облегченное мультимедийное решение с кодеками, которое вы уже должны были установить.

SMPlayer

SMPlayer, альтернатива VLC, также делает звездную работу по обеспечению плавного и простого воспроизведения ваших медиафайлов. SMPlayer, интерфейс для популярного MPlayer, предлагает немного более изящный интерфейс и улучшенный список воспроизведения по сравнению с VLC.

Такие функции, как автоматическое возобновление файлов, эквалайзер видео, фильтры, управление синхронизацией и возможность поиска в открытых субтитрах непосредственно в программе, делают этот пакет очень впечатляющим.

Boxee [Больше не доступно]

Джастин не может получить достаточно Boxee

и я начинаю понимать почему. Не путайте с приставкой, которую вы подключаете к телевизору (это Boxee Box) Boxee — это бесплатное приложение для медиацентра для вашего компьютера под управлением Windows, Linux или даже Mac.

После установки вы можете просто использовать его в качестве внешнего интерфейса для доступа к локальным медиафайлам или подключить компьютер к телевизору и получать доступ ко всему, что есть в вашей гостиной. Вы даже можете сделать свой собственный Boxee Box из старого ПК. Представьте, что Интернет появился на вашем телевизоре!

Web связь

Chrome / Firefox

Редко я группирую такие приложения вместе, особенно когда в тени скрываются фанаты, а Chrome и Firefox — два потрясающе кроссплатформенных браузера.

Chrome теперь сохраняет все ваши закладки

синхронизирован с вашей учетной записью Google, что означает, что вы можете войти в систему с любой ОС со всеми вашими любимыми без изменений Firefox 4 Beta предлагает новую функцию под названием Firefox Sync, которая делает то же самое.

И Firefox, и Chrome хорошо работают под Windows или Linux (я считаю, что Chrome еще быстрее в Linux), хотя вам нужно будет снова установить свои расширения.

буревестник

Thunderbird — идеальное решение для тех, кто использует двойную загрузку между Windows и Linux и которым требуется мощный почтовый клиент. Так как современные дистрибутивы Linux могут легко получать доступ к данным, хранящимся в разделе Windows NTFS, Thunderbird может попросить хранить все данные в вашем разделе Windows, к которым, в свою очередь, можно получить доступ из среды Linux.

Это означает, что вы никогда не будете не синхронизированы с вашей электронной почтой, даже если вы перезагрузите компьютер в другую операционную систему. Умно, а?

потоп

Deluge, один из лучших кроссплатформенных клиентов BitTorrent, доступен для всех трех основных операционных систем. Он имеет интерфейс, напоминающий uTorrent, и включает поддержку полного шифрования, удаленно управляемый веб-интерфейс, плагины и многое другое.

Вы даже можете управлять несколькими экземплярами Deluge по сети, что делает его очень мощным решением BitTorrent для тех, кто в этом нуждается. Проверьте наш полный low-down

для дополнительной информации.

пиджин

Если вам нужен универсальный клиент для обмена мгновенными сообщениями на вашем ПК, тогда попробуйте Pidgin. Ранее известный как GAIM (еще когда-то), Pidgin предлагает поддержку поразительного количества IM-сервисов.

К ним относятся AIM, Google Talk, ICQ, MSN и Yahoo, а также некоторые более неясные платформы и IRC-клиент, если вы склонны к этому. Как Дигсби

Пока не готова к Linux, Pidgin отлично заполняет свои ботинки.

[Больше не работает] Adobe Air Джава

С технической точки зрения это не приложения, а Adobe Air и Java работают на Windows и Linux, обеспечивая межплатформенную совместимость с множеством программ.

, Поскольку эти программы используют каркас, нет необходимости в отдельных версиях Windows и Linux — они должны просто работать.

С такими замечательными приложениями, как Tweetdeck, вы обязательно найдете то, что вам нравится. У нас есть несколько отличных подборок Adobe Air, а также больше информации о платформе Java здесь.

офис Графика

OpenOffice

У него нет интерфейса «следующего поколения», который можно увидеть в последнем пакете Microsoft Office

, но OpenOffice выполняет свою работу. Для тех из вас, кому нужен простой пакет Office, открывающий множество форматов файлов (включая все файлы Microsoft Office), не нужно искать дальше.

В комплект входят 5 программ:

Как ни странно, я использую OpenOffice Writer для этой самой статьи.

GIMP выступает за гNU ямаг Manipulation ппрограмма, и это Linux-эквивалент Photoshop. Поначалу интерфейс может быть сложным, особенно если вы привыкли к усилиям Adobe, но есть множество руководств и документации, которые помогут вам на вашем пути.

Для тех из вас, кто предпочел бы более похожий на Adobe интерфейс с самого начала, тогда попробуйте GIMPShop, хак, который изменяет интерфейс, чтобы GIMP более напоминал Photoshop.

InkScape

Для векторных художников с ограниченным бюджетом

InkScape поднимается до отметки. По сути, бесплатный эквивалент Corel Draw, Adobe Illustrator и Xara X, InkScape — это проект, разработанный и управляемый сообществом, с версиями для Windows, Linux и даже Mac OS X. InkScape использует стандартизированный формат W3C Scaleable Vector Graphics (.SVG) для сохранения файлов и как таковой совместим с широким спектром расширенных функций.

У вас есть любимое программное обеспечение, которое работает кроссплатформенно? Может быть, вы ищете Linux, эквивалентный любимой программе Windows? Сними это с груди в комментариях.

Спасибо читателю Роберту Баклунду за предложение этой статьи. У вас есть статья, которую вы хотели бы увидеть? Почему бы не войти в контакт? Не забывайте MakeUseOf Ответы на эти сложные технические вопросы!

7 популярных приложений для Windows, которые также доступны в Linux

Переход на Linux из Windows может быть сложным. Это незнакомство с новой платформой, отсутствие привычной среды рабочего стола и нехватка знакомых приложений.

Или последние, всё же есть?

Эти семь приложений, обычно встречающихся в Windows, на ряду с множеством других приложений, поддерживающими политику кроссплатформенности, делают большой вклад, прокладывая между абсолютно разными ОС невидимый мост, позволяющий пользователю безболезненно переходить от одной платформы к другой. Используйте их, чтобы облегчить переход от мира Microsoft к миру программного обеспечения с открытым исходным кодом и операционным системам на базе ядра Linux.

1. Dropbox

Первое популярное приложение, это облачное хранилище, которое пригодится при переходе на Linux. Оно может сыграть важную роль в вашей миграции. При правильном использовании (по умолчанию 2 ГБ бесплатно, но есть много способов расширить это ограничение), Dropbox может выступить в качестве резервной копии всех ваших жизненно важных данных, что весьма упрощает ваш переход на другую ОС.

Как только вы убедитесь, что все синхронизировано с облаком, просто загрузитесь в Linux, установите Dropbox, затем подождите, пока данные синхронизируются с вашей новой операционной системой.

Фотографии, музыка, документы и многое другое будет доступно для использования в Linux. Dropbox для Linux доступен для Ubuntu (DEB) и Fedora (RPM), а также может быть скомпилирован из исходного кода.

Обратите внимание, что Dropbox – не единственный кроссплатформенный вариант облачного хранилища. Другие варианты, могут лучше подходит для ваших нужд.

2. Skype

Давным-давно разработчики Skype выпустили версию для Linux, от которой вскоре отказались. К счастью, с тех пор, как Microsoft купила Skype, она гарантировала, что новая версия всегда будет доступна и будет работать в Linux.

После установки, все что вам нужно сделать, это войти в систему с вашими учетными данными. Все ваши контакты будут доступны и вы сможете общаться в чате с использованием текста, голоса или видео. Вы даже сможете купить и использовать Skype кредит таким же образом; различия едва заметны!

Вы найдете Skype для Linux доступным в формате DEB (семейство Debian/Ubuntu), RPM (Fedora) и в виде пакета Snap.

3. Audacity

Популярная цифровая звуковая рабочая станция (DAW) Audacity – это инструмент с открытым исходным кодом, поэтому неудивительно, что он доступен в Linux. Audacity идеально подходит для тех, кто намерен редактировать и обрабатывать аудио.

Возможно, вы используете Audacity для домашней записи музыки,
редактирования подкастов или даже оцифровки виниловых пластинок. В конечном счете, как вы используете это, зависит от вас.

Но вы можете быть уверены, что проекты, запущенные в Audacity под Windows, можно открыть и в Linux!

4. Google Chrome

Некоторые версии Linux поставляются с Mozilla Firefox или другим браузером с открытым исходным кодом. Но Google Chrome также доступен, как в более привычной форме, так и в виде Chromium с открытым исходным кодом. Это дает вам особое преимущество при переходе с Windows.

Одна из самых больших проблем для “свитчеров” – это отсутствие закладок браузера. Это особая проблема, если вы потратили годы (возможно, более 20) на сбор и сохранение адресов ваших любимых веб-сайтов. Видеть их потерянными или недоступными может показаться огромным разочарованием и даже может полностью препятствовать миграции.

К счастью, можно войти в Google Chrome с помощью учетной записи Google и синхронизировать ваши закладки и другие данные (включая последние вкладки). Если вы сделали это в Windows до перехода на Linux, вы сможете войти в Chrome в Linux и получить все свои закладки обратно!

5. Thunderbird

Thunderbird – самое универсальное программное обеспечение для работы с электронной почтой с открытым исходным кодом, доступное для Windows и Linux, способное обрабатывать электронную почту, RSS-каналы и группы Usenet.

Thunderbird также способен отображать информацию календаря (благодаря расширению) и резервное копирование данных электронной почты. Резервные копии созданные под Windows, могут быть восстановлены под Linux, что означает, что вы не потеряете свою электронную почту при переключении. Однако проще полагаться на синхронизацию IMAP с почтовым сервером.

6. VLC Media Player

Музыкальные и видеоплееры в Windows, поставляются с довольно урезанным функционалом, поэтому, имеет смысл поискать надежное стороннее решение. Возможно, наиболее популярной альтернативой является VLC Media Player с открытым исходным кодом и как почти все инструменты с открытым исходным кодом, он доступен в Linux.

Подходящий для подписки на подкасты, воспроизведения вашей музыкальной библиотеки, просмотра видео практически в любом формате и конвертации форматов, VLC Media Player от VideoLAN является одной из самых популярных мультимедийных платформ загружаемых в интернете.

7. Steam

Наконец, если вы неохотно переходите на Linux из-за ограниченных игровых возможностей, вы, вероятно, найдете версию Steam для Linux идеальной. Несмотря на то, что за последние несколько лет количество игр в Linux возросло, эта сцена все еще меньше, чем в Windows.

В результате, по-прежнему выпускаются игры с громкими именами, которых нет в Linux. В настоящее время, ситуация похожа на Mac Gaming несколько лет назад; в наши дни, большинство игр будут работать на macOS. Однако, в свое время, было мало игр для компьютеров Apple и еще меньше для Linux.

Steam для Linux, официально доступен только в виде DEB пакетов, но другие семейства Linux могут найти его в сторонних репозиториях.

С этими приложениями легко перейти на Linux

При переходе на Linux сегодня, с этими приложениями у вас есть преимущество, которого просто не было несколько лет назад. Напомним, эти приложения:

Как видите, переход на Linux с Windows, не должен вызывать затруднений. Многие знакомые для вас приложения уже доступны в Linux. Точно так же, вы найдете множество альтернативных, но высококачественных приложений только для Linux, которые познакомят вас с миром Linux.

И если это не обеспечивает всего, что вам нужно, вы всегда можете использовать инструменты на основе Wine для запуска программного обеспечения Windows в Linux!

12 кросс-платформенных инструментов для Windows, Macs и Linux

Введение

Один из вечных вопросов ИТ-индустрии состоит в том, какую платформу лучше всего выбрать для корпоративной сети. При этом абсолютно бессмысленно рассуждать, какая из платформ будет господствовать в ближайшие 5 – 10 лет. И дело здесь совсем не в предпочтениях. Просто большинство корпоративных сетей представляют собой «разношерстный» набор двух и более операционных систем, включая серверы и настольные компьютеры. Поэтому вопрос, скорее, следует ставить так: «Какие инструменты мы можем использовать для «наведения мостов» между Windows и остальной сетью?»

Главное требование кросс-платформенного мира состоит в том, чтобы предлагаемое решение максимально упрощало управление разными ОС в сети. Ниже приведен список из 12 кросс-платформенных инструментов, которые помогут вам управлять аппаратной средой и сделают мир Windows ( Linux / Unix / Mac) гораздо комфортнее.

1. Likewise Enterprise – «дружим» Windows с другими ОС

Совсем недавно Microsoft Subnet сообщила о выпуске версии средств интегрирования Active Directory от Likewise с открытыми кодами. Но полная версия Likewise Enterprise, которая позволяет пользователю интегрировать Windows с другими операционными системами, является коммерческим продуктом. Likewise обеспечивает кросс-платформенную совместимость Active Directory, Group Policy Management, NIS Migration, Security, SuDo и Single Sign-on для приложений. Если вы работаете с неоднородными сетевыми ресурсами или планируете запустить такую сеть в будущем, инструменты Likewise обеспечат простую интеграцию и удобное управление компонентами.

2. xTuple ERP – организация работы предприятия

В мира слияния корпораций и смешения платформ xTuple обеспечит ERP-решение, которое будет работать во всей вашей сети. Термин ERP (Enterprise Resource Planning System) переводится как «Система планирования ресурсов предприятия». Соответственно, xTuple обеспечит вам кросс-платформенное решение для планирования ресурсов. Этот программный клиент работает на Windows, Linux и Mac и выпускается в трех редакциях: PostBooks, Standard и OPENMFG. Standard и OPENMFG являются коммерческими продуктами, а бесплатная версия Postbooks доступна в открытых кодах и содержит инструменты для управления финансовыми потоками, а также модули управления продажами, поставками и складской учет.

Версия Standard предлагает дополнительные модули для управления распределением товаров, розничной продажей и мелким производством. Версия OPENMFG включает всеобъемлющее управление производством и распределением. Все три версии поставляются с редактором отчетов OPENRPT. Если вам требуются кросс-платформенные инструменты для планирования, управления и организации ежедневной работы предприятия – программные продукты xTuple ERP могут стать вполне подходящим решением.

3. WimbaClassroom 5.2 – организация виртуального обучения

Организация виртуального офиса и поддержка мобильных работников несет в себе новые проблемы. Вначале возникает вопрос, каким образом лучше объединить сотрудников и поддерживать взаимодействие между ними. В свою очередь, это порождает вопрос, как свести к минимуму конфигурацию и не потерять при этом в независимости платформы? В этом вам сможет пригодиться пакет Wimba Classroom. Это не только «виртуальный класс» или средство для организации дистанционного обучения: он содержит в себе все необходимые инструменты для объединения удаленных сотрудников, работающих в разных ОС. Кроме того, данный программный продукт поддерживает множество приложений, включая PowerPoint, HTML, Flash, видео, графику и т.д.

Пользователи Wimba Classroom стартуют в общей сессии, а затем могут создавать отдельные виртуальные рабочие кабинеты для специализированных задач. Инструкторы могут создавать загружаемые MP3 файлы, а также проводить опросы и анализировать их результаты с целью получения максимально достоверной информации. Таким образом, если перед вами стоит задача организации полнофункционального класса или образовательного процесса, подразумевающих работу с различными платформами, то советуем обратить внимание на Wimba Classroom.

Кроме того, здесь предусмотрены инструменты для мониторинга данных, VoIP телефонии, беспроводного трафика, беспроводных подключений и оценки эффективности приложений. Некоторые из этих инструментов бесплатны. http://www.solarwinds.com/products/orion/index.aspx

5. SharedPlan Pro – работаем с бизнес-планом

Вам придется управлять проектом, участники которого разбросаны по различным географическим и временным зонам? Скорее всего, вы столкнетесь с тем, что разные офисы работают на разных ОС, и вам понадобится инструмент управления проектом, единый для всех платформ. Желательно при этом, чтобы он был доступен не только с различных браузеров, но и с мобильных устройств. В этом случае SharePlan может оказаться именно тем, что вы ищете. Продукт легко инсталлируется и обеспечивает простой и быстрый старт в работе.

6. FreeNATS – тестируем сеть

Поставляется в виде инсталлируемого PHP-пакета или как виртуальное устройство. FreeNATS – это стабильно работающий бета-продукт. FreeNATS позволяет тестировать сеть и генерировать сообщения о том, что случилось в вашей организации. Текущая версия продукта еще не является окончательным бизнес-решением, но имеет все базовые функции для SMB, необходимые для создания программных тестов и тестов по запросу для наиболее важных сетевых приложений и протоколов. Кроме того, продукт активно улучшается, благодаря обратной связи с пользователями, и постоянно приобретает новые функции тестирования.

И, конечно же, одними из немаловажных положительных моментов являются бесплатность пакета и его кросс-платформенность. Поэтому, многие находят его отличным инструментом для помощи в автоматизации и тестировании сетевого окружения, особенно в небольших компаниях, где не привыкли разбрасываться средствами.

Перенос программ на C++ с Windows на Linux включает в себя ряд особенностей, связанных с работой с потоками. Эта тема актуальна для разработчиков, занимающихся портированием приложений с Windows на Linux. Перенос приложений между операционными системами может вызывать различные проблемы, связанные с особенностями работы каждой из них, включая способы управления потоками.

В данной статье мы рассмотрим основные различия между Windows и Linux в контексте работы с потоками, а также предоставим рекомендации по выбору библиотек в зависимости от задач вашего проекта. Эта информация будет полезна инженерам-разработчикам, столкнувшимся с потребностью мигрировать свои существующие приложения на операционную систему Linux. Миграция на Linux может быть необходима для обеспечения стабильности и непрерывной работы инфраструктуры компаний, особенно в ситуациях, когда становится сложнее продлить или приобрести новые лицензии, получить техническую поддержку от вендоров для критических обновлений и исправлений уязвимостей в системе.

Windows vs Linux: многозадачность и работа с потоками

Windows и Linux представляют собой две ведущие операционные системы, которые имеют свои особенности в отношении многозадачности и работы с потоками.

Типы многозадачности

Windows поддерживает два типа многозадачности: преемственную (preemptive multitasking) и кооперативную (cooperative multitasking). В преемственной многозадачности операционная система равномерно распределяет время процессора между потоками, переключая контексты выполнения. Это позволяет эффективно использовать ресурсы и предотвращать длительные блокировки потоков. С другой стороны, в кооперативной многозадачности каждый поток должен явно передавать управление другим потокам. Это требует взаимодействия и сотрудничества между потоками, но может привести к блокировке и сбоям системы, если какой-либо поток не выполняет передачу управления другим потокам.

Linux использует только преемственную многозадачность.

Процессы

В операционной системе Windows процессы более изолированы друг от друга благодаря использованию отдельных адресных пространств. Создание потоков в Windows осуществляется с помощью функции CreateThread, и каждый поток имеет собственный стек и уровень приоритета выполнения. Контроль над потоками осуществляется с помощью функций SuspendThread, ResumeThread и TerminateThread. Кроме того, в Windows существует понятие «фибров», которые являются легковесными потоками и используют стеки других потоков.

В операционной системе Linux также обеспечивается изоляция процессов путем выделения каждому процессу своего собственного адресного пространства. Потоки создаются с помощью функции pthread_create, и каждый поток имеет свой собственный стек и приоритет выполнения. Многопоточность в Linux реализована на уровне библиотеки, при этом ядро операционной системы предоставляет механизмы для управления потоками и распределения ресурсов.

В Linux также существуют «процессы-потомки», которые создаются родительским процессом и имеют свои собственные адресные пространства. Это позволяет процессу-предку создавать и управлять отдельными процессами, которые могут выполнять свои задачи независимо друг от друга.

Кроссплатформенные библиотеки для работы с потоками

Обычно большинство библиотек для работы с потоками, специфичных для Windows и не поддерживаемых в ОС Linux, могут быть относительно легко перенесены с помощью кроссплатформенных библиотек. При переносе программы из Windows в Linux рекомендуется сначала выбрать подходящую кроссплатформенную библиотеку, перенести код на нее, а затем скомпилировать код для работы в Linux.

Ниже приведены некоторые полезные кроссплатформенные библиотеки, которыми наши команды часто пользуются при портировании и миграции проектов. В целом, они подходят для большинства задач по переносу приложений. Мы также указали наиболее распространенные задачи и дали рекомендации по выбору соответствующей библиотеки.

C++ Standard Thread Library — это библиотека, предоставляемая стандартом языка C. Она содержит классы для работы с потоками, такие как std::thread и std::async, а также множество других функций для синхронизации потоков, таких как std::mutex, std::lock_guard, std::condition_variable и другие. STL библиотека предоставляет переносимый и удобный интерфейс для работы с потоками в C++. Она интегрируется хорошо с другими компонентами языка, но имеет ограниченные возможности, не поддерживает некоторые специфические функциональности, и требует хорошего понимания многопоточности для безопасного использования. Для более сложных сценариев могут потребоваться дополнительные библиотеки или фреймворки.

Intel Threading Building Blocks является кроссплатформенной библиотекой для разработки приложений на C++, которая может использоваться для разработки приложений под различные операционные системы, в том числе Linux. TBB включает в себя классы и шаблоны для работы с потоками, такие как tbb::task_group, tbb::task_scheduler_init, tbb::parallel_for и другие, а также классы для синхронизации потоков, такие как tbb::spin_mutex и tbb::concurrent_queue. Эта библиотека хорошо зарекомендовала себя при переносе PPL (Parallel Patterns Library) библиотеки, разработанной компанией Microsoft для работы с многопоточностью на C++. PPL предоставляет простой и удобный интерфейс для создания параллельных алгоритмов и выполнения операций в многопоточной среде. Однако, PPL не является кроссплатформенным и не поддерживается ОС Linux. Работает быстро, оптимизирована под параллельные вычисления на процессорах Intel.

Qt — это кроссплатформенный фреймворк для разработки приложений на C++, который также предоставляет классы для работы с потоками. Qt включает в себя классы для создания и управления потоками, такие как QThread, QThreadPool и другие, а также классы для синхронизации потоков, такие как QMutex, QReadWriteLock и другие.

В наших проектах мы часто используем библиотеку Qt для переноса функциональности, основанной на MFC (Microsoft Foundation Classes) — классах, предоставляемых Microsoft для разработки Windows-приложений. MFC включает в себя классы для работы с потоками, такие как CWinThread и другие. Так как MFC не поддерживается в Linux, мы находим Qt полезной альтернативой, так как она предоставляет схожие классы для работы с потоками. Используя Qt, мы можем эффективно перенести и переиспользовать логику потоковых операций, разработанных с использованием MFC в Windows-приложениях, в Linux.

SDL (Simple DirectMedia Layer) — это кроссплатформенная библиотека, разработанная для создания мультимедийных приложений на C++. Она также предоставляет классы для работы с потоками, такие как SDL_Thread и другие, а также классы для синхронизации потоков, такие как SDL_mutex и другие. SDL рекомендуется для работы с мультимедийными функциями, такими как работа с изображениями, звуком и вводом.

Boost C++ Libraries — это кроссплатформенная библиотека для разработки приложений на C++, которая поддерживает различные операционные системы, включая Linux. Она включает в себя классы для работы с потоками, такие как boost::thread, boost::thread_group и другие, а также классы для синхронизации потоков, такие как boost::mutex и boost::lock_guard. Boost рекомендуется использовать в случаях, когда требуется перенос приложений, использующих ATL (Active Template Library) — набор классов Microsoft для разработки Windows-приложений. ATL также включает классы для работы с потоками, например, такие как CAtlExeModuleT, но не является кроссплатформенным и не поддерживается в Linux. Boost C++ Libraries предоставляет аналогичные классы для работы с потоками, например, boost::thread, который предоставляет интерфейс для создания потоков и выполнения операций в них.

OpenMP (Open Multi-Processing) — это кроссплатформенная библиотека, позволяющая создавать многопоточные приложения с использованием директив препроцессора. Она поддерживается на различных платформах, включая Linux, и предоставляет разнообразные директивы, такие как #pragma omp parallel, #pragma omp for, #pragma omp sections и другие. Библиотека особенно полезна в ситуациях, когда требуется обработка большого объема данных параллельно. Она позволяет эффективно использовать множество процессорных ядер и распределить нагрузку на выполнение задач между потоками, ускоряя общее время выполнения программы.

Библиотека libuv предоставляет возможности для создания многопоточных приложений на C++. Она поддерживается на различных платформах, включая Linux, и предоставляет простой и удобный API для работы с потоками. Одной из особенностей libuv является наличие встроенного пула потоков, который позволяет выполнять асинхронные операции с максимальной производительностью и эффективностью в многопоточной среде.

Для создания новых потоков в приложении в libuv используется класс uv_thread_t, аналогичный функции CreateThread в WinAPI и директиве #pragma omp parallel в OpenMP. В отличие от Windows Thread Pool API, предоставляемого Microsoft в операционной системе Windows, libuv является кроссплатформенной и поддерживается не только на Windows, но и на других операционных системах. Поэтому наши инженеры обнаружили, что libuv является наиболее удобным и эффективным средством для переноса кода, основанного на Windows Thread Pool API, на Linux или другие платформы.

Выводы

Перенос приложений с Windows на Linux с использованием кроссплатформенных библиотек является наиболее распространенным сценарием. Однако, иногда при разработке приложений были использованы специфичные для Windows библиотеки, и в таких случаях требуется проявить творческий подход, чтобы обеспечить производительность и совместимость приложений на новой платформе.

В нашей следующей статье мы расскажем о различных сценариях, где возникает потребность в переносе приложений с использованием специфичных Windows библиотек, и представим инструменты и подходы, которые могут помочь разработчикам в решении задач, которые обеспечивают перенос функциональности и сохранение производительности на новой платформе.

На данный момент для российских разработчиков и владельцев продуктов критическое значение имеет не только процесс переноса приложений на Linux, но и правильный выбор дистрибутива этой популярной операционной системы. Несмотря на свою «открытость», некоторые пользователи в России могут столкнуться с определенными сложностями при использовании конкретных дистрибутивов Linux.

Наш эксперт провел тщательное исследование наиболее доступных и распространенных вариантов и составил рекомендации, которые могут помочь упростить выбор дистрибутива Linux. Для вашего удобства мы представляем эти рекомендации в виде инфографики, которая позволит вам легко сравнить и оценить различные дистрибутивы, и выбрать наиболее подходящий для ваших потребностей.

Наша цель — облегчить процесс выбора дистрибутива Linux и помочь российским разработчикам и владельцам продуктов успешно работать с этой операционной системой. Мы учитываем особенности российского рынка и предлагаем информацию, которая поможет вам сделать осознанный выбор и добиться оптимальной производительности и функциональности при переходе на Linux.

Ссылка на оригинал статьи:

  • Крутые курсоры для windows 10 аниме
  • Кросскомпиляция qt windows под linux
  • Кто создал windows и linux
  • Ксерокс 3100 mfp драйвера windows 10
  • Крутые иконки для windows 10