bea*_*eek 9 c c++ java networking cross-platform
我在Java/JavaFX中编写了一个程序,因为我需要跨平台支持.随着我的进步,我需要做一些Java中无法实现的低级操作系统网络操作.我从Runtime.exec()开始,转移到JNA/JNI,现在我担心维护操作系统与Java的兼容性最终会比仅移植到本机应用程序更多.
做这个的最好方式是什么?
我知道GTK +受到*nix和windows的支持,所以我想我会将它用于我的UI.为每个操作系统维护不同版本的应用程序有多难?您是否可以建议一个起点来编写需要跨平台但仍具有低级操作系统访问权限的东西?我有很多Java经验(以及使用OpenGL的大量C++)但我以前从未关心过任何事情.
或者,是否有一种很好的方法来构建原始数据包,发送ICMP ping以及从Java执行其他低级别网络任务?
您的问题很笼统,所以我将在这里列出一些最佳实践。如果您相应地编辑您的问题,我可以缩小范围。
1-最重要的是编译器和构建环境。这可能是微不足道的选择,所有主要平台都支持Clang和GCC 。然而,构建环境有点棘手。仅仅一个 Makefile 并不适用于所有平台。相反,请选择CMake或SCons之类的东西。这将帮助您更轻松地管理源代码并在所有系统上生成适当的 makefile。
2-您可能想在所有平台上构建相同的 GUI。在这种情况下,您可以像您提到的那样使用Qt或GTK+。
3-文件 I/O。如果您有大量文件 I/O,您可能需要看看Boost File System。
4-对于您使用的所有其他库,请确保所有平台都支持它们。一般来说,我建议使用历史上维护良好的库,例如Boost。
5-最后,使用PIMPL Idiom隐藏平台特定代码。
如果您想深入了解跨平台 C++ 编程,这里有一本好书:C++ 中的跨平台开发:构建 Mac OS X、Linux 和 Windows 应用程序。