2009-06-30 8 views
5

Espérant que quelqu'un en connaisse un bon: je cherche une librairie C++ (libre d'utilisation) avec une hiérarchie de classes et des méthodes ressemblant à l'API Java, avec au moins le I/O & partie de mise en réseau si elle, en particulier la gestion HTTP.Bibliothèque C++ avec une API de type Java

Je travaille principalement avec C & Java, mais pour ce projet particulier, C++ est recommandé, j'ai donc pensé à adopter un bon ensemble de bibliothèques C++ sans faire face à une courbe d'apprentissage abrupte.

Merci d'avance pour toute recommandation.

Répondre

5

Qt est à mon humble avis très java. C'est à dire. ils préfèrent Java-Style Iterators par rapport aux STL. Qt comprend la mise en réseau (examples) et beaucoup d'autres choses (comme les scripts via javascript)

+0

QT. Je suis tenté, mais il est hors de question d'adopter la GPL, c'est-à-dire qu'elle sera rejetée par la direction. –

+2

Sa LGPL à partir de la version 4.5 –

+0

Le lien de technologie troll est mort – johnchen902

5

Avez-vous regardé les bibliothèques Boost?

  • Boost. IOStreams fournit un cadre pour la définition de flux, de tampons de flux et de filtres d'entrée/sortie.
  • Asio - Mise en réseau portable, y compris les sockets, les minuteurs, la résolution de nom d'hôte et les iostreams de socket.
  • Beaucoup others ....

Les bibliothèques Boost offrent des fonctionnalités similaires par rapport à l'API Java, mais ils très 'look and feel' - de façon appropriée - comme une bibliothèque C++.

+0

Merci. J'ai vérifié Boost: Asio, mais il gère jusqu'à TCP, ce qui signifie que si j'ai besoin de gérer HTTP avec des sessions/cookies et d'autres choses, je vais devoir l'implémenter moi-même. Je me demande s'il y a une nouvelle proposition exclusivement pour HTTP dans les travaux ... –

+0

Le projet cpp-netlib - http://sourceforge.net/projects/cpp-netlib - travaille sur le support du client HTTP pour l'inclusion dans Boost. –

0

Une bibliothèque C++ qui ressemblait à une Java serait une mauvaise bibliothèque, à mon humble avis. Les deux langues sont si différentes que ce qui est bon pour l'un sera presque inévitablement mauvais pour l'autre.

+3

Une bibliothèque C++ qui a les mêmes interfaces qu'une bibliothèque java ne serait pas une mauvaise conception imo. .NET a été en mesure de fournir les mêmes interfaces pour un certain nombre de langages très différents et ses bibliothèques C++ sont plutôt bonnes. –

2

Il y a aussi la possibilité d'utiliser quelque chose comme POCO, ce qui est un peu plus simple que d'utiliser quelque chose comme Boost, tout en étant la plate-forme de croix.

Alors que la seule fois où j'ai utilisé HTTP dans Java était il y a longtemps, l'interface de la bibliothèque POCO semble assez simple à utiliser. Il donne un exemple d'utilisation de FTP de base a quelque chose comme ceci:

Poco::Net::FTPStreamFactory::registerFactory(); 
std::ofstream localFile(inputFile, std::ios_base::out | std::ios_base::binary); 
Poco::URI uri(inputURL); 
std::auto_ptr<std::istream> ptrFtpStream(Poco::Net::URIStreamOpener::defaultOpener().open(uri)); 
Poco::StreamCopier::copyStream(*ptrFtpStream.get(), localFile); 
+0

Je le vérifiais avant, mais j'aimerais avoir plus de commentaires de la part des gens ici. Merci. –

+0

@Rafael, Poco est une excellente bibliothèque qui s'appuie sur la stl, suit tous les idiomes C++, et semble pourtant être similaire à Java. Donc, je pense que c'est un excellent choix pour vous. – StackedCrooked

0

Vous pouvez jeter un oeil à Mindroid, qui est principalement axée sur la programmation embeddded:

Mindroid est un cadre d'application (en mettant l'accent sur messagerie et concurrence) qui vous permet de créer des applications en utilisant un ensemble de composants réutilisables - comme Android. Le nom Mindroid a deux significations différentes. D'une part Mindroid est un ensemble minimal de classes Android de base et d'autre part ces classes forment également l'esprit d'Android (du moins à mon avis).