精华内容
下载资源
问答
  • java开源框架有哪些?Java常用开源框架
    千次阅读
    2021-03-14 20:51:17

    java是一种高级语言,每一个java项目编程都是有框架的,这样才能将程序开发出来,可是java开源框架有哪些?今天我们就给大家讲解一下,给大家一个参考!

    1.Spring Framework 【Java开源JEE框架】

    Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。

    Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion

    of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。

    2.WebWork 【Java开源Web开发框架】

    WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。

    3.Struts 【Java开源Web开发框架】

    Struts是一个基于Sun

    J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message

    resources)整合到一个统一的框架中。

    4.Hibernate 【Java开源持久层框架】

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

    Hibernate可以应用在任何使用JDBC的场合

    5.Quartz 【Java开源调度框架】

    Quartz是OpenSymphony开源组织在Job

    scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。

    6.IBATIS 【Java开源持久层框架】

    使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象, 这一层与通过Hibernate 实现ORM

    而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL 语句。相对Hibernate等

    “全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统 设计提供了更大的自由空间。作为“全自动”ORM

    实现的一种有益补充,ibatis 的出现显 得别具意义。

    java开源框架可以帮助Java人员更好的开发编程,所以作为Java人员一定要了解这些,为更好的开发程序做准备!最后大家如果想要了解更多java初识知识,敬请关注奇Q工具网。

    推荐阅读:

    更多相关内容
  • Android开发常用开源框架

    万次阅读 多人点赞 2018-08-22 11:37:41
    Android开发常用开源框架2 Android开发常用开源框架3 GitHub上最火的Android开源项目,所有开源项目都有详细资料和配套视频 2017年伊始,你需要尝试的25个Android第三方库 Android开发常用第三...

    Android开源框架系列

    开源框架

    开源框架

    开源框架

    https://github.com/JackChan1999/Android_Open_Project

    目录

    Square& JakeWharton

    框架名称功能描述
    Picasso一个强大的图片下载与缓存的库
    OkHttpSquare出品,一个Http与Http/2的客户端
    RetrofitSquare出品,类型安全的Http客户端
    ButterKnife将Android视图和回调方法绑定到字段和方法上
    sqlbrite一个响应式的数据查询框架
    keywhiz一个隐私管理分配系统,能很好地与SOA配合
    LeakCanary内存泄漏检测工具
    javapoet动态生成Java源码
    phrase字符串格式化
    dagger依赖注入框架
    FlowFlow 将一个应用分成一个逻辑上的 Screen组合,Screen不是任何形式的特殊的库对象,而是一个被创造来代表我们应用视图的普通java对象(POJO)
    MortarMortar是一个专注拖拽和依赖注入的库,Mortar 用以下几个不同的部分将一个应用分为可组合的模块:Blueprints, Presenters and a boatload of custom Views
    RxBinding可以实现数据层与View层的绑定,当数据发生变化,View会自动更新UI
    RxAndroidRxJava的扩展, 优雅地处理异步请求
    timber对Android的Log类进行封装后的一个Log工具
    ViewPagerIndicatorPaging indicator widgets compatible with the ViewPager
    DiskLruCacheJava实现基于LRU的磁盘缓存
    OttoOtto 是 Square 公司出的一个事件库 (pub/sub 模式), 用来简化应用程序组件之间的通讯, otto 修改自 Google 的 Guava 库, 专门为 Android 平台进行了优化, 与上面介绍的 EventBus 相比, 两个库各有各的优点, 完全取决于我们自己项目的需求来选择它们哪一个
    javapoetA Java API for generating .java source files 动态生成Java源码

    阿里巴巴

    项目名称功能描述
    freelineFreeline 是 Android 平台上的秒级编译方案,Instant Run 的替代品,也可以从 Freeline 官方主页来获取更多的信息。Freeline 由蚂蚁聚宝 Android 团队开发,它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时。Freeline能够为Android开发者节省很多喝杯咖啡的时间
    weexA framework for building Mobile cross-platform UI
    fastjsonA fast JSON parser/generator for Java
    DubboDubbo is a distributed, high performance RPC framework enpowering applications with service import/export capabilities
    AndFixAndFix is a library that offer hot-fix for Android App.
    dexposeddexposed enable ‘god’ mode for single android application.

    小米开源项目

    项目名称功能描述
    Notes小米便签社区开源版
    FileExplorerMIUI文件管理器社区开源版
    SoundRecorderMIUI录音机社区开源版

    Google开源项目

    项目名称功能描述
    GCMGoogle Cloud Messaging 消息推送
    iosched:Google I/O Android App
    android-topekaGoogle官方给出的material design应用指南
    android-UniversalMusicPlayerGoogle官方给出的m音乐播放器,支持Android phones, tablets, Auto, Wear and Cast devices
    ExoPlayerAn extensible media player for Android
    guavaGoogle Core Libraries for Java 6+
    flexbox-layoutFlexboxLayout is a library project which brings the similar capabilities of CSS Flexible Box Layout Module to Android.
    guice轻量级的依赖注入框架
    gsonA Java serialization/deserialization library that can convert Java Objects into JSON and back.
    protobufProtocol Buffers - Google’s data interchange format
    material-design-iconsMaterial Design icons by Google
    autoAuto 是 Java 生成器源代码集合,包括:AutoFactory - 兼容 JSR-330 的工厂;AutoService - ServiceLoader 的 Provider-configuration 文件;AutoValue - Java 1.6+ 的不可变 value-type 代码生成;Common - Helper 实用工具,用来编写注释处理器
    android-architectureA collection of samples to discuss and showcase different architectural tools and patterns for Android apps

    android-topeka

    categories.pngcategory_history.pngquiz_shakespeare.png

    android-UniversalMusicPlayer

    phone.pngphone_lockscreen.pngphone_fullscreen_player.png

    ExoPlayer

    An extensible media player for Android

    Streaming media with ExoPlayer - Google I/O 2016

    guava

    flexbox-layout

    flex-direction.gif

    1、图片加载,缓存,处理

    框架名称功能描述
    Android Universal Image Loader一个强大的加载,缓存,展示图片的库,已过时
    Picasso一个强大的图片下载与缓存的库
    Fresco一个用于管理图像和他们使用的内存的库
    Glide一个图片加载和缓存的库,使用的App有:网易新闻
    GlidePaletteAndroid Lollipop Palette is now easy to use with Glide
    PicassoPaletteAndroid Lollipop Palette is now easy to use with Picasso !
    Picasso-transformations一个为Picasso提供多种图片变换的库
    Glide-transformations一个为Glide提供多种图片变换的库


    Picasso是著名的开源组织Square出品的图片处理框架,使用的比较多

    Glide是Google的员工基于Picasso开发,优化的,Android官网推荐使用的图片处理框架

    Fresco是Facebook开源的图片处理框架,真正做到了三级缓存,功能强大,强烈推荐使用

    Android Universal Image Loader是一个老牌的图片处理框架,但是在2015年的9月份已经停止更新维护,所以不推荐使用

    2、图片裁剪

    框架名称功能描述
    uCropImage Cropping Library for Android,使用的App有:薄荷,哔哩哔哩
    android-crop图片裁剪,使用的App有:网易新闻,芒果TV
    cropper图片裁剪开源框架
    Android-Image-CropperImage Cropping Library for Android, optimized for Camera / Gallery
    PhotoCropperAndroid 大图片裁剪终极解决方案
    android-cropimageCropImage Activity from Gallery.apk packaged as a reusable Android library
    PhotoCropA Library which can be used to crop images in Android similar to Facebook and Telegram,使用的App有:快手

    uCrop

    android-crop

    Android-Image-Cropper

    PhotoCropper

    PhotoCrop

    3、图片选择

    框架名称功能描述
    MultiImageSelector图片选择,使用的App有:薄荷
    BGAPhotoPicker-AndroidAndroid 图片选择、预览、九宫格图片控件、拖拽排序九宫格图片控件
    TakePhoto轻量级Android照片处理框架
    RxGalleryFinalAndroid图片单选/多选、拍照、裁剪、压缩。视频选择和录制。GalleryFinal
    boxing一个多媒体选择器库,B站出品。可以选择一张或者多张图片,提供预览和裁剪功能。同样支持gif图,选择视频和图像压缩功能。

    boxing

    multi_image.webpsingle_image_crop.webpvideo.webp

    MultiImageSelector

    BGAPhotoPicker-Android

    TakePhoto

    预览图
    运行效果图

    RxGalleryFinal

    4、图片转换,压缩,滤镜

    框架名称功能描述
    Android-gpuimage一个开源的基于GPU的图像处理库,提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜,使用的App有:快手
    photoview使用的App有:薄荷,网易新闻
    circleimageview圆形图片,使用的App有:薄荷
    RoundedImageView圆形图片,使用的App有:薄荷
    SelectableRoundedImageViewAndroid ImageView that supports different radii on each corner
    android-gif-drawablegif图片,使用的App有:网易新闻,快手
    Luban可能是最接近微信朋友圈的图片压缩算法
    CompressorCompressor is a lightweight and powerful android image compression library

    Android-gpuimage

    circleimageview

    68747470733a2f2f7261772e6769746875622e636f6d2f68646f64656e686f662f436972636c65496d616765566965772f6d61737465722f73637265656e73686f742e706e67

    RoundedImageView

    SelectableRoundedImageView

    )

    5、高斯模糊,毛玻璃,图片模糊

    框架名称功能描述
    android-stackblurAndroid StackBlur is a library that can perform a blurry effect on a Bitmap based on a gradient or radius, and return the result. The library is based on the code of Mario Klingemann.
    BlurryBlurry is an easy blur library for Android
    blurkit-androidThe missing Android blurring library. Fast blur-behind layout that parallels iOS.
    BlurViewDynamic iOS-like blur of underlying Views for Android
    ImageBlurringAndroid blurring image(bitmap) by java and jni

    android-stackblur

    68747470733a2f2f7261772e6769746875622e636f6d2f6b696b6f736f2f616e64726f69642d737461636b626c75722f6d61737465722f6172742f73637265656e73686f74312e706e6768747470733a2f2f7261772e6769746875622e636f6d2f6b696b6f736f2f616e64726f69642d737461636b626c75722f6d61737465722f6172742f73637265656e73686f74322e706e67

    Blurry

    blurkit-android

    BlurView

    BlurScreenshot.png

    ImageBlurring

    anim.gif

    缓存

    框架名称功能描述
    LruCacheAndroid原生API,内存缓存
    DiskLruCacheJava实现基于LRU的磁盘缓存
    ASimpleCache一个为android制定的轻量级的开源缓存框架
    base-diskcacheAndroid 缓存库,融合了DiskLruCache和ASimpleCache

    网络请求

    框架名称功能描述
    httpclientapache开源的网络请求框架,已过时
    AsyncHttpClient基于httpclient封装,已过时
    OkHttpSquare出品,一个Http与Http/2的客户端
    RetrofitSquare出品,类型安全的Http客户端
    VolleyGoogle推出的Android异步网络请求框架和图片加载框架,使用的App有:网易新闻


    从Android 6.0 开始,Google删除了apache的开源网络请求框架httpclient,所以基于httpclient的AsyncHttpClient也不推荐使用了

    Volley适合那些请求频繁但数据量不大的场景,不适用于大数据的请求,比如下载文件

    Android 6.0 后,Android开始使用OkHttp,而Retrofit是一个网络代理框架,可以更简单的使用OkHttp

    网络解析

    框架名称功能描述
    Gson一个Java序列化/反序列化库,可以将JSON和java对象互相转换
    JacksonJackson可以轻松地将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象
    FastjsonJava上一个快速的JSON解析器/生成器
    HtmlPaser一种用来解析单个独立html或嵌套html的方式
    Jsoup一个以最好的DOM,CSS和jQuery解析html的库

    数据库

    框架名称功能描述
    OrmLiteJDBC和Android的轻量级ORM java包
    Sugar用超级简单的方法处理Android数据库
    GreenDAO一种轻快地将对象映射到SQLite数据库的ORM解决方案,使用的App有:薄荷,京东
    ActiveAndroid以活动记录方式为Android SQLite提供持久化
    SQLBriteSQLiteOpenHelper 和ContentResolver的轻量级包装
    android-database-sqlcipher数据库加密
    storioBeautiful API for SQLiteDatabase and ContentResolver
    realm-java移动数据库,高性能数据库:一个SQLite和ORM的替换品
    ObjectBox相信不少人都用过GreenDao和EventBus,这两库都是greenrobot公司出品。ObjectBox也是该公司出品。GreenDao号称是最快的与SQLite的对象关系映射(ORM)。但是自从2011年以来,公司声称发现了许多的缺陷,有很多问题影响了性能。所以开发出另外一套性能最好且易用的NoSQL数据库,优于其他数据库5-15倍的性能。

    依赖注入

    框架名称功能描述
    ButterKnife将Android视图和回调方法绑定到字段和方法上
    Dagger2一个Android和java快速依赖注射器
    AndroidAnotations快速安卓开发。易于维护
    RoboGuiceAndroid平台的Google Guice 已退役
    guiceGoogle开发的依赖注入框架

    图表Chart

    框架名称功能描述
    WilliamChart创建图表的Android库
    HelloCharts兼容到API8的Android图表库,使用的App有:薄荷
    MPAndroidChart一个强大的Android图表视图/图形库,使用的App有:春雨医生

    后台处理

    框架名称功能描述
    Tape一个轻快的,事务性的,基于文件的FIFO的库
    Android Priority Job Queue一个专门为Android轻松调度任务的工作队列

    事件总线

    框架名称功能描述
    EventBus安卓优化的事件总线,简化了活动、片段、线程、服务等的通信,使用的App有:薄荷
    Otto一个基于Guava的增强的事件总线
    HermesEventBus一个基于EventBus的、能在进程间发送和接收event的库,在IPC或者插件开发中非常有用

    响应式编程

    框架名称功能描述
    RxJavaJVM上的响应式扩展
    RxJavaJoins为RxJava提供Joins操作
    RxAndroidAndroid上的响应式扩展,在RxJava基础上添加了Android线程调度
    RxBinding提供用RxJava绑定Android UI的API
    AgeraAndroid上的响应式编程
    RxLifecycleLifecycle handling APIs for Android apps using RxJava

    Log框架

    框架名称功能描述
    Logger简单,漂亮,强大的Android日志工具
    Hugo在调试版本上注解的触发方法进行日志记录
    Timber一个小的,可扩展的日志工具

    测试框架

    框架名称功能描述
    MockitoJava编写的Mocking单元测试框架
    RobotiumAndroid UI 测试
    RobolectricAndroid单元测试框架


    Android自带很多测试工具:JUnit,Monkeyrunner,UiAutomator,Espresso等

    调试框架

    框架名称功能描述
    Stetho调试Android应用的桥梁,使得可以利用Chrome开发者工具进行调试

    性能优化

    框架名称功能描述
    LeakCanary内存泄漏检测工具
    BlockCanary轻松找出Android App界面卡顿元凶
    ACRAAndroid应用程序崩溃报告
    Google GuavaGuava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等。 所有这些工具每天都在被Google的工程师应用在产品服务中。
    google protobuf由google开发,并且在google内部使用。Protobuf的作用和xml、json是一回事,但他是二进制格式,性能好、效率高。ProtoBuf开发者指南

    热修复

    框架名称功能描述
    tinker腾讯开源的一个热修复框架
    AndFixalibaba热修复框架
    dexposedalibaba热修复框架

    二维码

    框架名称功能描述
    Zxing一个二维码开源框架
    barcodescanner使用的App有:薄荷
    BGAQRCode-Android扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式
    zxing-android-embedded使用的App有:春雨医生,芒果TV

    多媒体

    框架名称功能描述
    ijkplayerBilibili开源的视频播放器
    DanmakuFlameMasterAndroid开源弹幕引擎·烈焰弹幕使,使用的App有:网易新闻
    Vitamio一款全能多媒体开发框架,全面支持硬件解码与 GPU 渲染
    FFmpeg一个基于C语言的多媒体开源框架
    百度媒体云基于百度视频处理、人脸识别、语音等技术媒体相关的整体解决方案
    ExoPlayerGoogle开源的视频播放器

     

    KSYStreamer_Android

    金山云Android采集推流SDK(Livestream SDK),支持内置/自定义美颜(Beauty Filter)、美声(Beauty Voice)、软硬编(Software/Hardware Encoder) 、网络自适应(Network Auto Adapt)、混音(Voice Mixer)、混响(Reverb)、画中画(PIP)、连麦(RTC)、动态贴纸(Sticker)

    KSYMediaPlayer_Android

    金山云Android播放SDK(KSYUN Live Streaming player SDK),支持RTMP HTTP-FLV HLS 协议(supporting RTMP HTTP-FLV HLS protocol),直播延时2-3秒(Living delay 2 or 3 seconds),supporting jitter control,software&hardware decode

    KSYLive_Android

    Android播放&推流融合版本[Android Play and LiveStreaming SDK] 直播延时2-3秒(Living delay 2 or 3 seconds),supporting jitter control,software&hardware decode, 支持内置/自定义美颜(Beauty Filter)、美声(Beauty Voice)、软硬编(Software/Hardware Encoder) 、网络自适应(Network Auto Adapt)、混音(Voice Mixer)、混响(Reverb)、画中画(PIP)

    KSYMediaPlayer_Android

    金山云Android播放SDK(KSYUN Live Streaming player SDK),支持RTMP HTTP-FLV HLS 协议(supporting RTMP HTTP-FLV HLS protocol),直播延时2-3秒(Living delay 2 or 3 seconds),supporting jitter control,software&hardware decode

    MD360Player4Android

    Android上全景视频渲染的库

    MD360Player4Android

    汉语转拼音

    框架名称功能描述
    pinyin4jhttps://github.com/belerweb/pinyin4j
    TinyPinyin适用于Java和Android的快速、低内存占用的汉字转拼音库。
    PinyinSearchLibraryThe library of PinyinSearch,a Java Library which provide data parsing methods, data matching method and so on for T9 search and Qwerty search.PinyinSearch = T9Search + QwertySearch
    com.pinyin4android唯品会使用

    下载

    框架名称功能描述
    MultiThreadDownload使用的App有:薄荷
    FileDownloaderAndroid 文件下载引擎,稳定、高效、灵活、简单易用
    RxDownload基于RxJava和Retrofit打造的下载工具, 支持多线程下载和断点续传, 智能判断是否支持断点续传等功能
    file-downloader安卓上轻量级Http/Https文件下载框架,我的目标是让安卓文件下载越简单越好,尽可能以最简洁明了的方式完成复杂需求。

    动画

    框架名称功能描述
    facebook:reboundA Java library that models spring dynamics and adds real world physics to your app
    ViewAnimatorA fluent Android animation library
    Material-AnimationsAndroid Transition animations explanation with examples
    AndroidViewAnimationsCute view animation collection.
    ListViewAnimationsAn Android library which allows developers to easily add animations to ListView items
    recyclerview-animatorsAn Android Animation library which easily add itemanimator to RecyclerView items.
    RecyclerViewItemAnimatorsAn Android library which provides simple Item animations to RecyclerView items
    AnimationEasingFunctionsAndroid Animation Easing Functions. Let’s make animation more real!
    BaseAnimationBaseAnimation收集网络Android相关动画集合,自定义控件等,近200多种源码
    FragmentAnimations3D animations for support-v4 Fragment transition.
    AnimatedEditTextAndroids EditText that animates the typed text. EditText is extended to create AnimatedEditText and a PinEntryEditText.
    ViewPagerTransformsLibrary containing common animations needed for transforming ViewPager scrolling for Android v13+
    lottie-androidRender After Effects animations natively on Android and iOS

    Android选择器类库

    包括日期时间选择器、单项选择器、地址选择器、颜色选择器、文件目录选择器、数字选择器、星座选择器等

    框架名称功能描述
    material-calendarviewmaterial design 风格的日历控件使用的App有:薄荷
    MaterialDateTimePickerPick a date or time on Android in style,使用的App有:薄荷
    android-times-squareStandalone Android widget for picking a single date from a calendar view.
    AndroidPicker安卓选择器类库,包括日期时间选择器、单项选择器、地址选择器、颜色选择器、文件目录选择器、数字选择器、星座选择器等。
    Android-PickerView仿iOS的PickerView控件,有时间选择和选项选择并支持一二三级联动效果
    WheelPickerSimple and fantastic wheel view in realistic effect for android.
    Android-FilePickerPhotopicker and document picker for android
    NumberPickerViewanother NumberPicker with more flexible attributes on Android platform
    Android-PickerView-LibrarySimple PickerView for Android

    Rajawali

    Rajawali是一个用于Android应用的3D引擎,基于 OpenGL ES 2.0。它可以用于普通的应用程序,以及实时壁纸。使用的App有:网易新闻

    aspectj

    AspectJ是一个面向切面的框架,它扩展了Java语言。使用的App有:网易新闻

    Apache Thrift

    可伸缩的跨语言服务开发框架,使用的App有:网易新闻

    Fabric SDK

    https://realm.io/cn/news/oredev-ty-smith-building-android-sdks-fabric/?utm_source=tuicool&utm_medium=referral

    GNU Trove

    Trove 是一个快速、轻量级 Collection 类的集合。Trove 提供所有标准 java.util Collections 类的更快的版本以及能够直接在原语(primitive)(例如包含 int 键或值的 Map 等)上操作的 Collections 类的版本。使用的App有:网易新闻

    Java-WebSocket

    简单的说,websocket就是用来做网页聊天以及手机推送用的。使用的App有薄荷

    以前不管使用HTTP轮询或使用TCP长连接等方式制作在线聊天系统,都有天然缺陷,随着HTML5的兴起,其中有一个新的协议WebSocket protocol,可实现浏览器与服务器全双工通信(full-duplex),它可以做到:浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。这个新的协议的特点正好适合这种在线即时通信。

    现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求,然而HTTP request 的header是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽。

    而最比较新的技术去做轮询的效果是Comet – 用了AJAX。但这种技术虽然可达到全双工通信,但依然需要发出请求。

    在 WebSocket API,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

    org.eclipse.mat

    内存分析。使用的App有薄荷,网易新闻

    CommonAdapter

    使用的App有:薄荷

    Android-Best-Practices

    JKeyboardPanelSwitch

    Android键盘面板冲突 布局闪动处理方案

    起源,之前在微信工作的时候,为了给用户带来更好的基础体验,做了很多尝试,踩了很多输入法的坑,特别是动态调整键盘高度,二级页面是透明背景,魅族早期的Smart bar等, 后来逐一完善了,考虑到拥抱开源,看业界还是有很多应用存在类似问题。就有了这个repo

    使用的App有:薄荷

    美洽

    最快连接你与顾客 美洽,在线客服软件的漂亮之选

    MeiqiaSDK-Android https://github.com/Meiqia/MeiqiaSDK-Android

    使用的App有:薄荷

    logger

    使用的App有:薄荷

    DeepLinkDispatch

    最常见的应用就是在网页中跳转到App的某个页面,电商类应用可是都用了的。根据data跳转不同的页面

    使用的App有:京东

    Crouton

    Context sensitive notifications for Android

    Bolts-Android 一个底层库集合

    com.arcsoft.livebroadcast

    ReLinker

    Relink是一个加载Android so文件(shared library)的一个库。

    在Android平台上加载本地库的危险性

    kik

    CHAT ON KIK

    Kik lets you connect with friends, 
    groups and the world around you 
    through chat. And now, you can 
    chat with bots too.

    nanohttpd

    嵌入式HTTP服务器 ,NanoHTTPD是一个免费、轻量级的(只有一个Java文件) HTTP服务器,可以很好地嵌入到Java程序中。支持 GET, POST, PUT, HEAD 和 DELETE 请求,支持文件上传,占用内存很小。可轻松定制临时文件使用和线程模型。

    i-jetty

    jetty经过交叉编译移植到android平台的web服务器软件,它可以部署web网站

    com.googlecode.mp4parser

    Sparta

    com.hp.hpl.sparta:XML、DOM、XPath解析器,http://sparta-xml.sourceforge.net/

    JRegex

    JRegex:jregex:正则表达式库

    NativeSubprocess

    唯品会使用

    NativeSubprocess 是一个可以让你在android 程序中创建Linux子进程并执行你的java代码的so库。由于市面上典型的内存清理工具只清理apk 包关联的进程,而不会处理linux原生进程,所以NativeSubprocess 可以做什么您懂的!

    androidquery

    Android-Query(AQuery)是一个轻量级的开发包,用于实现 Android 上的异步任务和操作 UI 元素,可让 Android 应用开发更简单、更容易,也更有趣。

    唯品会使用,https://github.com/androidquery/androidquery

    MarsDaemon

    进程常驻,进程保活

    唯品会使用 https://github.com/Marswin/MarsDaemon

    SA-iSecurity

    SA-iSecurity 客户端安全输入系统,唯品会使用

    口碑推荐平台TapReason

    TapReason提供了一款无广告的App增长解决方案。他们的广告是最值得信赖的,因为这些广告都是来自于好友或同事的推荐。唯品会使用

    ImageViewZoom

    Android ImageView widget with zoom and pan capabilities,春雨医生使用

    LayoutCast

    Cast android code and resource changes to the running application through ADB. 
    Android SDK sucks. It’s so slow to build and run which waste me a lot of time every day.

    把代码和资源文件的改动直接同步到手机上,应用不需要重启。省去了编译运行漫长的等待,比较适合真机调试的时候使用。

    Joda-Time

    JodaTime 提供了一组Java类包用于处理包括ISO8601标准在内的date和time。可以利用它把JDK Date和Calendar类完全替换掉,而且仍然能够提供很好的集成。

    Joda-Time主要的特点包括:

    1. 易于使用:Calendar让获取”正常的”的日期变得很困难,使它没办法提供简单的方法,而Joda-Time能够 直接进行访问域并且索引值1就是代表January。
    2. 易于扩展:JDK支持多日历系统是通过Calendar的子类来实现,这样就显示的非常笨重而且事实 上要实现其它日历系统是很困难的。Joda-Time支持多日历系统是通过基于Chronology类的插件体系来实现。
    3. 提供一组完整的功能:它打算提供 所有关系到date-time计算的功能.Joda-Time当前支持6种日历系统,而且在将来还会继续添加。有着比JDK Calendar更好的整体性能等等。

    https://github.com/JodaOrg/joda-time

    msgpack

    MessagePack是一个基于二进制高效的对象序列化Library用于跨语言通信。 
    它可以像JSON那样,在许多种语言之间交换结构对象;但是它比JSON更快速也更轻巧。 比Google Protocol Buffers还要快4倍

    https://github.com/msgpack/msgpack-java

    scribejava

    ScribeJava 是一个简单的 Java 实现的 OAuth/OAuth2 库。

    Logback

    Logback是由log4j创始人Ceki Gülcü设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。

    frame-video-view

    No more issues with VideoView

    JakeWharton scalpel

    Jake Wharton,Android开发领域传奇一般的存在,熟悉Android开发的同学应该都听说过,即便没有,也应该会经常用到他主导或参与贡献的开源 项目,他在GitHub上开源了多个Android兼容性、依赖注入相关的知名项目,目前就职Square, 也参与贡献了Square公司开源的诸如Retrofit, okhttp等热门项目。

    Jake大神喜欢以刀命名自己的项目,可能他觉得这能很好的表达它们作为开发利器的犀利程度,不过没准他也很喜欢中国武侠小说呢。

    他最有名的两把刀,一把是Dagger, 匕首,一个依赖注入框架,用来解耦开发中各模块依赖的,最早由他开发与维护,后来转给Google维护;另一把是同样大名鼎鼎的ButterKnife, 黄油刀,有了它,你再也不用写findViewById了,以后有机会给大家详细介绍它们。

    今天的主角是它们不那么知名的小兄弟,Scalpel,这把非常酷炫实用的解剖刀。

    他其实就是实现了一个三维效果的界面布局层次展示,不需要手机连接开发设备,只需要简单几行代码将其集成到你的应用中,即可开启酷炫之旅,它提供的功能包括:

    • 通过setLayerInteractionEnabled(boolean)可开启与关闭此功能。

    • 通过setDrawViews(boolean)可控制是否绘制View, 也就是说它可以仅仅是个简单的布局线框图,也可以是色彩丰富的真实效果图。

    • 通过setDrawIds(boolean)可控制是否显示各控件的Id, 你就能知道你自己正在调试的那个控件到底在哪了?

    • 通过setChromeColor,setChromeShadowColor可自定义线框图的颜色,随你喜欢。

    material-camera

    https://github.com/afollestad/material-camera

    material-camera

    hawk

    Android的安全、简单Key-Value存储

    bugsnag

    Bugsnag crash reporting for Android apps ,Bugsnag exception reporter for Android

    goldengate

    An Android annotation processor for generating type safe JavaScript bindings (Bridges)

    Helpshift

    slf4j

    SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

    Nuwa热修复

    Nuwa, pure Java implementation, can hotfix your android application.

    Android 热修复Nuwa的原理及Gradle插件源码解析

    megvii人脸识别

    RadiusNetworks

    http://www.radiusnetworks.com/

    https://github.com/RadiusNetworks

    Swiper

    • 开源,免费,强大的移动端触摸滑动插件

    • Swiper常用于移动端网站的内容触摸滑动

    • Swiper3依然拥有progress,这是制作3D切换效果的利器

    • 在Swiper上加些小动画,制作高大上的展示

    Netty

    Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

    也就是说,Netty 是一个基于NIO的客户、服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty相当简化和流线化了网络应用的编程开发过程,例如,TCP和UDP的socket服务开发。

    “快速”和“简单”并不用产生维护性或性能上的问题。Netty 是一个吸收了多种协议的实现经验,这些协议包括FTP,SMTP,HTTP,各种二进制,文本协议,并经过相当精心设计的项目,最终,Netty 成功的找到了一种方式,在保证易于开发的同时还保证了其应用的性能,稳定性和伸缩性。

    cheesesquare:Demos the new Android Design library

    FBReaderJ

    FBReaderJ是一个Android 平台上的电子书阅读器。这是一个Java版的FBReader图书阅读器的克隆。 FBReaderJ支持多种电子书格式: oeb , epub ,和fb2 。直读从zip、tar和gzip等格式

    hawtdispatch

    HawtDispatch is a small ( less than 100k ) thread pooling and NIO handling framework API modeled after the libdispatch API. libdispatch is the API that Apple created to power the Grand Central Dispatch (GCD) technology in OS X. It allows you to more easily develop multi-threaded applications which can more easily scale to take advantage of all the processing cores on your machine. At the same time, its development model simplifies solving many of the problems that plague multi-threaded NIO development.

    ZeroMQ 一个轻量级消息内核

    autobahn-android

    WebSocket & WAMP in Java for Android

    Robotium

    Robotium 是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长 按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。Robotium结合Android官方提供的测试框架达到对应用程序进行自动化的测 试。另外,Robotium 4.0版本已经支持对WebView的操作。Robotium 对Activity,Dialog,Toast,Menu 都是支持的。

    One Step & Big Bang

    锤子科技的一小步,智能手机进化的一大步


    什么是一步(One Step)?

    通过拖拽完成将信息发送至应用或联系人的动作,节省了在不同应用之间切换的诸多步骤,第一次打通了手持设备中应用间的边界

    进一步了解 One Step

    什么是大爆炸(Big Bang)?

    用拇指大面积按压屏幕中的文字,Big Bang 会将你按住的那一段文字全部“炸”开并且按照语义智能拆分成易于选取的独立的字和词,由你随心所欲地选择,并可直接搜索、分享和复制。Big Bang 开创性地解决了在手机这样的小屏幕上难于处理文字的弊端

    展开全文
  • Java常用开源框架

    千次阅读 2018-04-15 12:28:12
      JAVA中间件:包括服务框架中间件:解决集群间的访问通信问题。消息中间件:解决应用之间的消息传递、解耦、异步的问题。数据访问中间件:解决应用访问数据库的共性问题。   分布式系统:一定是有多个节点...

    1、Java中间件,分布式系统、分布式缓存、消息队列

    JAVA中间件:包括服务框架中间件:解决集群间的访问通信问题。消息中间件:解决应用之间的消息传递、解耦、异步的问题。数据访问中间件:解决应用访问数据库的共性问题。
      分布式系统:一定是有多个节点组成的系统,一般一个节点就是一台服务器,节点之间是相互连通协作的,这些连通的节点上部署了我们的组件,共同服务于一个大型系统。比如淘宝网,在对浏览器发送请求的背后,是一个大型的分布式系统为我们服务,整个系统有的负责请求处理,有的负责存储,有的负责计算,最终通过相互的协作把请求的结果返回给浏览器,并呈现给我们。
      分布式缓存:就是把数据存放在不同的物理机器上,利用分布式缓存中间件进行处理数据。Redis和memcached缓存系统都是以key-value的形式存储和访问数据,在内存中维护一张巨大的HashTable。但是redis比memcached支持的数据类型更多,有五种数据类型:String、Hash、List、Set、ZSet(有序集合)。注意:分布式缓存系统需要用到一致哈希算法,它的的好处在于节点个数发生变化(减少或增加)时无需重新计算哈希值,避免大量key的重新映射,保证数据储存或读取时可以正确、快速地找到对应的节点。
      消息队列(中间件):负责消息的收发管理,利用高效可靠的异步消息传递机制集成到分布式系统。五大优点:解耦、异步、横向扩展、安全可靠、顺序保证。常见的有activeMQ(支持多语言,实现jms1.1),RabbitMQ(支持更多语言,基于AMQP规范),kafka(高吞吐量,分布式,分区,O(1)磁盘顺序提供消息持久化)
      
    2、常用的开源项目框架理解

    Spring
      Spring是轻量级的IoC和AOP的容器框架,是进行对象管理、对象关联、解耦的一个中间层框架。是面向Bean的编程,实现了组件的解耦。
      IoC(DI)依赖注入实现的技术:反射机制、工厂模式。其中pring的BeanFactory主要实现步骤如下,

    1. 解析配置文件(bean.xml)
    2. 使用反射机制动态加载每个class节点中配置的类
    3. 为每个class节点中配置的类实例化一个对象
    4. 使用反射机制调用各个对象的seter方法,将配置文件中的属性值设置进对应的对象
    5. 将这些对象放在一个存储空间(beanMap)中
    6. 使用getBean方法从存储空间(beanMap)中取出指定的JavaBean

    AOP实现的技术: JDK动态代理技术 和 CGLIB技术(动态字节码增强技术) 。尽管实现技术不一样,但都是基于代理模式 , 都是生成一个代理对象 。
      JDK动态代理技术:主要使用到 InvocationHandler 接口和 java.lang.reflect.Proxy类的newProxyInstance() 方法。通过使用接口,使系统松耦合。
      CGLIB(动态字节码增强)技术:是继承被代理对象,然后Override需要被代理的方法。使用继承,代码写起来更简单。

    Struts2
      Struts2是基于servlet、MVC设计模式的Web应用框架,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
      Struts2框架采用Filter(StrutsPrepareAndExecuteFilter)作为核心控制器实现。是类级别的拦截,每次请求对应实例一个新的Action,然后调用setter getter方法把request中的数据注入。一个Action对象对应一个request上下文。
      Struts2流程分析:
    ①当在浏览器中输入相应网址,会加载web.xml中的核心控制器
    ②核心控制器会拦截所有请求,加载struts.xml的配置文件,找到和请求名字相同的action
    ③创建Class属性指定类的对象
    ④执行method属性指定的方法,返回一个字符串结果
    ⑤找Name等于此字符串的result,转到相应页面或action
    ⑥在页面中执行相关代码:通过EL表达式或者OGNL表达式取当前类属性的值

    SpringMVC
      SpringMVC是基于Servlet 、MVC设计模式的一个松耦合的web应用框架,使用前端控制器模式来进行设计,再根据请求映射规则分发给相应的后端控制器进行处理。
    SpringMVC框架采用Servlet作为核心控制器实现。是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去。一个方法对应一个Request上下文,所以方法直接基本上是独立的,独享request,response数据。、
      开发效率对比:
      由于SpringMVC基于方法的拦截,有加载一次单例模式bean注入。而Struts2是类级别的拦截,每次请求对应实例一个新的Action,需要加载所有的属性值注入,所以,SpringMVC开发效率和性能高于Struts2
      SpringMVC的工作流程如下:
    1.用户发送请求至前端控制器(DispatcherServlet)
    2. DispatcherServlet收到请求调用处理器映射器(HandlerMapping)
    3. 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器对象一并返回给DispatcherServlet
    4. DispatcherServlet通过处理器适配器(HandlerAdapter)调用具体的处理器(Controller)
    5. 处理器即后端控制器(Controller)执行具体的业务操作,完成后返回ModelAndView
    6. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
    7. DispatcherServlet将ModelAndView传给ViewReslover视图解析器
    8. ViewReslover解析后返回具体View DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)
    9. DispatcherServlet响应用户

    MyBatis
      MyBatis 是一个基于 Java 的 持久层 框架, MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。 把实体类和SQL语句之间建立了映射关系,是一种半自动化的ORM实现。
      MyBatis的特点:
    基于SQL语法,SQL语句封装在配置文件中,便于统一管理与维护。
    自动化程度低、手工映射SQL,灵活程度高。

    Hibernate
      Hibernate是优秀的Java 持久化层解决方案、对象-关系映射(ORM)工具、简化了JDBC 繁琐的编码。
      Hibernate特点:
      Hibernate对象-关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率。
    编写程序的时候,HQL语句操作,以面向对象的方式处理数据。而保存数据的时候,却以关系型数据库的方式存储。

    SpringBoot
      SpringBoot是基于Spring4.0的一套快速搭建Spring框架的整合包。方便对各种框架的整合,让他们集成在一起更加简单,简化了我们在集成过程中的模板化配置。遵循”约定大于配置”,实现零配置。
      特点:

    1. 创建独立的Spring应用程序
    2. 嵌入的Tomcat,无需部署WAR文件
    3. 简化Maven配置
    4. 自动配置Spring
    5. 提供生产就绪型功能,如指标,健康检查和外部配置

    微服务
      微服务是一种可以让软件职责单一、松耦合、自包含、可以独立运行和部署的架构思想。微服务架构是让微服务与微服务之间在结构上“松耦合”,而在功能上则表现为一个统一的整体。目的是有效的拆分应用,实现敏捷开发和部署。
      关键思想就是:拆分、单一、独立、组件化。把原本一个庞大、复杂的项目按业务边界拆分一个一个独立运行的小项目,通过接口的方式组装成一个大的项目。

    Dubbo
      首先了解一下ESB(企业数据总线):一般采用集中式转发请求,适合大量异构系统集成,侧重任务的编排,性能问题可通过异构的方式来进行规避,无法支持特别大的并发。
      Dubbo(服务注册管理),采用的是分布式调用,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其侧重服务的治理,将各个服务颗粒化,各个子业务系统在程序逻辑上完成业务的编排。是远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)
      其核心部分包含:

    1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
    2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
    3. 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。
      服务注册中心:Zookeeper 服务调用方式: RPC

    Spring Cloud
      Spring cloud是基于spring boot以及结合Netflix 相关思想和代码对微服务理念的java实现。提供了一些可以用于快速构建分布式系统通用模式的工具(例如:配置管理、服务注册与发现、断路器、智能路由、微代理、控制总线),在本质上是一种分布式的解决方案。
      五大核心组件:

    1. 服务注册发现 - Netflix Eureka
    2. 配置中心 - spring cloud config
    3. 负载均衡-Netflix
    4. Ribbon 断路器 - Netflix Hystrix
    5. 路由(网关) - Netflix Zuu

    服务注册中心:Netflix Eureka 服务调用方式:REST API

    Zookeeper
      ZooKeeper是一种分布式应用程序协调服务,用于管理大型主机。它是集群的管理者,监视着集群中各个节点的状态,根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
      Zookeeper作用:
    1.命名服务 2.配置管理 3.集群管理 4.分布式锁 5.队列管理
      Zookeeper设计目的:
    1.最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。
    2.可靠性:具有简单、健壮、良好的性能,如果消息被到一台服务器接受,那么它将被所有的服务器接受。
    3.实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。但由于网络延时等原因,Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。
    4.等待无关(wait-free):慢的或者失效的client不得干预快速的client的请求,使得每个client都能有效的等待。
    5.原子性:更新只能成功或者失败,没有中间状态。
    6.顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面。

    Docker
      Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
    总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
      Docker 主要用途。
    (1)提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
    (2)提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
    (3)组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

    Redis
      Redis 是一个开源的,基于高级的key-value存储在内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
      Redis优点
    (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
    (2) 支持丰富数据类型,支持string,list,set,sorted set,hash
    (3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
    (4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

    Memcached
      Memcached基于一个存储键/值对的hashmap。Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
      Memcached特征:

    1. 协议简单
    2. 基于libevent的事件处理
    3. 内置内存存储方式
    4. memcached不互相通信的分布式

    Memcache与Redis的区别都有哪些?
    1)、存储方式 Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 Redis有部份存在硬盘上,这样能保证数据的持久性。
    2)、数据支持类型 Memcache对数据类型支持相对简单。 Redis有复杂的数据类型。
    3)、使用底层模型不同 它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。 Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。

    3、远程服务调用 RPC、REST API

      RPC 即远程过程调用(Remote Procedure Call Protocol,简称RPC),像调用本地服务(方法)一样调用服务器的服务(方法)。通常的实现有 XML-RPC , JSON-RPC , 通信方式基本相同, 不同的只是传输数据的格式。
      RPC架构里包含如下4个组件:
    1、 客户端(Client):服务调用方
    2、 客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数打包成网络消息,再通过网络发送给服务方
    3、 服务端存根(Server Stub):接受客户端发送过来的消息并解包,再调用本地服务
    4、 服务端(Server):真正的服务提供者。
      RPC架构目的是把调用、编码/解码的过程封装起来,让用户像调用本地服务一样的调用远程服务。要做到对客户端(调用方)透明化服务, RPC框架需要考虑解决如下问题:

    1. 服务端提供的服务如何发布,客户端如何发现服务;
    2. 如何对请求对象和返回结果进行序列化和反序列化;
    3. 如何更高效进行网络通信。

    REST 即表述性状态传递(Representational State Transfer,简称REST),是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
      REST通过资源的角度观察网络( 通过HTTP协议定义的通用动词方法(GET、PUT、DELETE、POST) ),以URI对网络资源进行唯一标识,响应端根据请求端的不同需求,通过无状态通信,对其请求的资源进行表述。
      REST使用HTTP+URI+XML 来实现其要求的架构风格:HTTP协议和URI用于统一接口和定位资源,文本、二进制流、XML、JSON等格式用来作为资源的表述。
      满足REST约束条件和原则的架构或接口,就被称为是RESTful架构或RESTful接口。就像URL都是URI(统一资源标识)的表现形式一样,RESTful是符合REST原则的表现形式。

    展开全文
  • Java常用开源框架总结,主要包括Apache commons、Apache commons lang、Apache commons-io、commons-fileupload。
  • Android 常用开源框架汇总

    千次阅读 2017-07-18 16:24:31
    Android 常用开源框架汇总

    一、网络库

    1. Retrofit

      Retrofit 是 Square 公司研发的网络请求库,也是目前 android 最流行的 HttpClient 库之一,越来越多的公司开始使用这个请求库,并且可以完美结合 RxJava,就像官网介绍的一样,Retrofit 是一款类型安全的网络框架,基于 HTTP 协议,服务于 Android 和 Java 语言
      GitHub 地址:Retrofit GitHub 地址https://github.com/square/retrofit

    2. okhttp

      同样 okhttp 也是 Square 公司研发的网络请求库,是一款基于 HTTP 和 HTTP2.0 协议的网络框架,服务于 Java 和 Android 客户端,okhttp 以 21K 的 stars 排在 GitHub 中 android 子标题的第二名,很多公司都在使用,从 Retrofit 2.0 开始内置 okhttp 框架,Retrofit 专注封装接口完成业务需求,okhttp 专注网络请求的高效安全
      GitHub 地址:okhttp GitHub 地址https://github.com/square/okhttp

    3. volley

      Google 的 Andorid 开发团队也意识到有必要将 HTTP 的通信操作再进行简化,于是在 2013 年度的 Google I/O 大会上推出了一个新的网络通信框架—Volley,Volley 在性能方面进行了大幅度的调整,它是设计目标是适合进行数据量不大,但通信频繁的网络操作,对于数据量大的网络操作就会表现糟糕
      GitHub 地址:volley GitHub 地址https://github.com/google/volley

    网络方面的库我们就介绍上面主要用到的 3 个

    二、图片加载库

      在 Android 设备上面,快速高效的显示图片是极为重要的,在过去的很长时间里,我们在如何高效的存储图像这方面遇到了很多问题,例如图片太大,但是内存却比较小,但是越来越多优秀开源框架的使用解决了我们这方面的问题,接下来我们来看看这些优秀的开源框架
    
    1. glide

       在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 glide 的图片加载框架,作者是 bumptech 这个库被广泛的应用在 Google 开源的项目中,包括 2014 年 Google  I/O 大会上发布的官方 App
      

      GitHub 地址:Glide GitHub 地址https://github.com/bumptech/glide

    2. fresco

      一款管理图片内存的方案,是目前最强大的图片加载框架之一,facebook 的出身证明了它不是重复的制造轮子,在管理图片的内存上以及渐进式加载、加载 gif 都具有独有特性
      GitHub 地址:Fresco GitHub 地址https://github.com/facebook/fresco

    3. picasso

      非常强大的图片下载、缓存框架,picasso 更强调的是图片的下载,更重要的是这也是 square 团队的作品,想必提到 square 团队,它出片的东西我们还是非常的放心使用
      GitHub 地址:picasso GitHub 地址https://github.com/square/picasso

    4. Android-Universal-Image-Loader

      看到这个,想必有一定经验的 Android 开发者都会非常的熟悉,曾经的图片加载之王当之无愧,15.4k 的 stars 足以证明它的热门,与 glide 不同的是 UIL 提供了大量的配置方式,图片加载状态的回调,加载动画等,以及提供了移动端图片加载框架的缓存思路,三级缓存策略等
      GitHub 地址:UIL GitHub 地址https://github.com/nostra13/Android-Universal-Image-Loader

    5. PhotoView

      一款 ImageView 展示框架,支持缩放,响应手势,位于图片排行榜的第五位,PhotoView 与上面不同的是图片的展示功能,可以实现类似微信头像的放大功能,还有就是很多 App 的图片显示响应手势按压式如何是现实的,这里 PhotoView 将都可以轻松实现
      GitHub 地址:PhotoView GitHub 地址https://github.com/chrisbanes/PhotoView

    6. CircleImageView

      圆角 ImageView,在我们的 App 中这个想必是太常见了,也许我们可以有无数种展示圆角图片的方法,但是 CircleImageView 绝对是我们在开发时需要优先考虑的,如果你还不知道 CircleImageView,那么你需要赶快去体验它在处理圆角图片时的强大了,相信你肯定会觉得和 CircleImageView 相见恨晚,需要注意的是这个并不是图片加载库,暂且归类放在这里
      GitHub 地址:CircleImageView GitHub 地址https://github.com/hdodenhof/CircleImageView

    7.Sketch 是 Android 上一款强大且全面的图片加载器,除了图片加载的必备功能外,还支持 GIF,手势缩放、分块显示超大图片、自动纠正图片方向、显示视频缩略图等功能
    GitHub 地址 : https://github.com/panpf/sketch
    三、UI

    1. material-dialogs

      是一款自定义View框架,如多你还是一个自定义 View 的新人,对 Dialog 使用还有点生疏,那么通过使用 material-dialogs 可以提升你的 Dilaog 使用能力
      GitHub 地址:material-dialogs GitHub 地址https://github.com/afollestad/material-dialogs

    2. flexbox-layout

      是一款弹性伸缩布局,FlexboxLayout 作为 LinearLayout 和 RelativeLayout 的替代者,值得大家在项目开发中去尝试使用,毕竟是 Google 出品
      

      GitHub 地址:flexbox-layout GitHub 地址https://github.com/google/flexbox-layout

    3. AndroidSwipeLayout

      非常强大的滑动式布局,滑动删除是我们 app 中的常见需求,商品详情的上下滑动需求在实际开发中我们也是经常遇到,AndroidSwipeLayout 在 GitHub 上有 8300 个 stars,证明还是值得使用
      GitHub 地址:AndroidSwipeLayout GitHub 地址https://github.com/daimajia/AndroidSwipeLayout

    4. BaseRecyclerViewAdapterHelper

    强大的通用 RecyclerView 适配器,在 GitHub Android 适配器排行榜第一
    GitHub 地址:BaseRecyclerViewAdapterHelper GitHub 地址https://github.com/CymChad/BaseRecyclerViewAdapterHelper

    1. MaterialDrawer

    强大的材料风格的抽屉框架,非常灵活,易于使用
    GitHub 地址:MaterialDrawer GitHub 地址https://github.com/mikepenz/MaterialDrawer

    1. Android-ObservableScrollView

    一款让视图滑动更具有视觉效果的滑动式框架,在 GitHub 上提供了 12 种滑动效果,可以用来提升 App 的滑动体验
    GitHub 地址:Android-ObservableScrollView GitHub 地址https://github.com/ksoichiro/Android-ObservableScrollView

    1. AppIntro

      一款提供快速制作欢迎页的框架,在国内的 App 开发中,ViewPager 开发 App 的欢迎页已经是标配的需求,但是 AppIntro 也是绝对值得你一看
      GitHub 地址:AppIntro GitHub 地址https://github.com/apl-devs/AppIntro

    2. ViewPagerIndicator
      一款基于 ViewPager 的页面指示器开源框架,作者是 Android 大神 JakeWharton,只是已经很长时间没有更新了,大家可以参考使用
      GitHub 地址:ViewPagerIndicator GitHub 地址https://github.com/JakeWharton/ViewPagerIndicator
      好了 UI 相关的库就介绍这么多,以后发现好用的会添加进来,方便查阅

    四、动画

    1. lottie-android

      动画类框架排行榜第一名,一款可以在 Android 端快速展示 Adobe Afeter Effect(AE) 工具所做动画的框架,利用 json 文 件快速实现动画效果是它最大的便利,而这个 json 文件也是由 Adobe 提供的 AE 工具制作的,在 AE 中装一个 Bodymovin 的插件,使用这个插件最终将动画效果生成 json 文件,这个 json 文件即可由 LottieAnimationView 解析并生成绚丽的动画效果,而且它还支持跨平台
      GitHub 地址:lottie-android GitHub 地址https://github.com/airbnb/lottie-android

    2. Material-Animations

    一款提供场景转换过渡能力的动画框架,与 lottie-android 不同的是,Material-Animations 提供的是场景切换的动画效果
    GitHub 地址:Material-Animations GitHub 地址https://github.com/lgvalle/Material-Animations

    1. AndroidViewAnimations

    一款提供可爱动画集的动画框架,在 lottie-android 和 Material-Animations 两个动画框架霸主之后排名第三,可见也是非常厉害
    GitHub 地址:AndoridViewAnimations GitHub 地址https://github.com/daimajia/AndroidViewAnimations

    1. recyclerview-animators

    为 recyclerview 提供扩展动画的框架,recyclerview 已经推出了很长时间,如果你还在使用 ListView,那就说明你老了
    GitHub 地址:recyclerview-animators GitHub 地址https://github.com/wasabeef/recyclerview-animators

    五、json 解析框架

    1. fastjson

    一款基于 json 解析、生成的框架,是阿里出品,这就保证了代码的质量,在网络请求时使用较多,值得尝试
    GitHub 地址:fastjson GitHub 地址https://github.com/alibaba/fastjson

    六、内存泄露检测

    1. leakcanary

      一款内存检测框架,服务于 Java 和 Andorid 客户端,方便简洁是 leakcanary 最大的特点,只需要在应用的 apllication 中集成,就可以直接使用它,15.9k 的 stars 足够说明它的厉害,最关键是是,它也是 square 团队的作品,就这一条,不用说相信大家也都明白
      GitHub 地址:leakcanary GitHub 地址https://github.com/square/leakcanary

    七、页面路由

    1. ARouter

      一款提供服务、页面跳转的路由框架,由阿里出品,该框架提供:从外部 URL 映射到内部页面、跨模块的页面跳转(模块化必备,页面解耦),拦截跳转过程等能力,绝对是一个企业级的开发框架
      GitHub 地址:ARouter GitHub 地址https://github.com/alibaba/ARouter

    八、数据库框架

    1. realm-java

    Realm 是一款专门为移动端打造的数据库框架,比普通的数据库更快,力压 greenDAO
    GitHub 地址:Realm GitHub 地址https://github.com/realm/realm-java

    1. greenDAO

      greenDAO 是一款高效、快速的 SQLite 型数据库,star 数量和 Realm 不相上下,由 greenrobot 团队开发维护,此团队还有一个很牛的框架便是 EventBus
      GitHub 地址:greenDAO GitHub 地址https://github.com/greenrobot/greenDAO

    九、异步

    1. RxJava
      RxJava 是 ReactiveExtensions 的 Java VM 实现:用于通过使用 observable 序列来组合异步和基于事件程序的库,它扩展观察者模式以支持数据/事件序列,并添加允许你以声明组合序列的操作符,同时提取对低级线程、同步、线程安全性和并发数据结构等问题的隐藏
      GitHub 地址:RxJava GitHub 地址https://github.com/ReactiveX/RxJava

    2. RxAndroid

      一款 Android 客户端组件间异步通信框架,位于通信框架排行榜的第二名,仅在 EventBus 之后,两者的区别是 EventBus 是用来取代组件之间繁琐的 Interface,而 RxAndroid 是用来取代 AnsyTask 的,两者并不冲突
      GitHub 地址:RxAndroid GitHub 地址https://github.com/ReactiveX/RxAndroid

    3. agera

    Agera 是一组类和接口,可以帮组编写 Android 的功能,异步和无效应用程序,需要 Android SDK 版本 9 或更高,是 Google 官方出品
    GitHub 地址:Agera GitHub 地址https://github.com/google/agera

    1. RxBinding

    一款提供 UI 组件事件响应能力的框架,通过 RxBinding 可以理解响应式编程的快乐,让项目的事件流程更加的清晰
    GitHub 地址:RxBinding GitHub 地址https://github.com/JakeWharton/RxBinding

    十、事件消息

    1. EventBus

      事件间通信框架 stars 第一,在大型项目的 Activities、Fragments、Threads、Services 都有使用场景,尽管 EventBus 在向未创建的组件传递事件时有些局限,仅适合在活着的组件之间传递消息,但任然不妨碍在各个大型项目的场景中使用
      GitHub 地址:EventBus GitHub 地址https://github.com/greenrobot/EventBus

    十一、图表

    1. MPAndroidChart

    MPAndroidChart 是一款图表框架,以快速、简洁,强大著称的图表框架,支持线条、饼型、气泡和烛台图,以及缩放、拖动和动画
    GitHub 地址:MPAndroidChart GitHub 地址https://github.com/PhilJay/MPAndroidChart

    十二、生成模板代码

    1. butterknife

      使用注解生成模板代码,将 view 与方法和参数绑定,配合 Android Studio 提供的 ButterKnife 插件,帮组开发者省却了频繁的 findViewById 的烦恼,最新的 ButterKnife 还提供了 onclick 绑定以及字符串的初始化,初学者可以查阅 ButterKnife 以及 ButterKnife 进一步学习,作者是 JakeWharton,是大名鼎鼎的 square 的团队成员之一
      GitHub 地址:butterknife GitHub 地址https://github.com/JakeWharton/butterknife

    展开全文
  • 2017 Android GitHub 常用开源框架汇总
  • 开源框架license整理

    2019-04-13 01:05:00
    NULL 博文链接:https://cbigbird.iteye.com/blog/1716593
  • 常用的 14 个开源框架

    2021-10-20 16:41:39
    顶级程序员常用的 14 个开源框架,YYDS! 昨天下载下来Java16尝尝鲜。一看,好家伙,足足有176MB大。即使把jmc和jvisualvm给搞了出去,依然还是这么大,真的是让人震惊不已。 但即使JDK足够庞大,它的功能也已经不够...
  • Android开发常用开源框架3

    千次阅读 2016-12-21 12:23:14
    AndroidImageSlider ... 自己造轮子–android常用多条件帅选菜单实现思路(类似美团,爱奇艺电影票下拉菜单) WaveSideBar 全新的快速索引导航栏,联系人字母排序侧边栏 android-viewbadger
  • .net 常用开源框架

    千次阅读 2019-03-07 18:09:28
    Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单。通过Linq To JSON可以快速的读写Json,通过JsonSerializer可以序列化你的.Net对象。让你轻松实现.Net中所有类型(对象,...
  • 各种常用开源框架的架构图,希望对大家有些帮助。 请多多支持。 其中包括struts1和2,hibernate,spring,ibatis, je22和oracle。
  • Android开发常用开源框架2

    千次阅读 2016-12-20 15:27:30
    JumpingBeanslottie-androidAndroid-ProgressBarWidthNumber JJSearchViewAnim一个炫酷的SearchView搜索动画库TextLayoutBuilder在 Android 中轻松实现...可缓存常用文字布局。 FreeType 缓存预热。 MarqueeView俗名:
  • Android开发常用开源框架推荐

    千次阅读 2016-04-26 14:49:56
    目前我们在Android开发中,不可避免地要用到大量的开源项目,本文对常用开源项目进行一些推荐。 首先是如何选择开源项目?建议优先选择github上比较活跃的开源项目,尽量避免从网页上零散的拷贝代码。选择开源...
  • C#常用开源框架收集

    千次阅读 2018-08-08 11:20:35
    SuperSocket 是 一个轻量级的可扩展的 Socket 开发框架,可用来构建一个服务器端 Socket 程序,而无需了解如何使用 Socket,如何维护Socket连接,Socket是如何工作的。该项目使用纯 C# 开发,易于扩展和集成到已有...
  • Spring [sprɪŋ]:大名鼎鼎的开源框架,源起于 Rod Johnson 在2002年编著的《Expert one on one J2EE design and development》一书中,对Java EE 系统框架臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求...
  • 1、图片加载,缓存,处理框架名称功能描述Android-Universal-Image-Loader">Android Universal Image Loader一个强大的加载,缓存,展示图片的库Picasso一个强大的图片下载与缓存的库Fresco一个用于管理...
  • Android开发常用开源框架:图片处理

    千次阅读 2018-04-12 11:07:46
    Android开发常用开源框架:图片处理 框架名称 功能描述...
  • J2EE开发之常用开源框架介绍

    千次阅读 2016-08-07 22:43:02
    主要就我所了解的J2EE开发的框架开源项目做个介绍,可以根据需求选用适当的开源组件进行开发。主要还是以Spring为核心,也总结了一些以前web开发常用开源工具和开源类库 1持久层: 1)Hibernate  这个不用...
  • 本文介绍了一些.NET中用到的分布式缓存框架,和一些开源的程序,以及一些常见的类库,供大家学习参考。
  • Java开源框架集(全)

    千次阅读 2020-05-20 18:39:06
    Spring Framework 【Java开源 J2EE框架】 Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是...
  •  多读书、多看报,多研究常用开源框架的源码,比如:github.com,这里汇集了全球工程师的智慧!  言归正传,下文会列举工作中常用的一些技术,以及如何锻炼提升自己的架构能力。  由于每块技术市场上基本都有...
  • Android开发常用开源框架——转自Android开发者JackChan
  • OpenSourseFrame:常用开源框架的使用和源码分析
  • 常见NIO开源框架(MINA、xSocket)学习 基于io包的阻塞式socket通信代码简单,在连接数很少的情况下是一个不错的选择。不过实际应用中一个socket服务器采用传统的阻塞式socket方式通信可能会是一场灾难,一路...
  • 最近项目终于要上线了,于是准备对App进行混淆和加固, 但项目引入的开源库有点多,混淆时报了一堆错误,在参考了很多资料后,在前人基础上整理了一个常用开源库proguard rules的列表,以后就不用再次折腾了项目git...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 186,984
精华内容 74,793
关键字:

常用开源框架

友情链接: Verilog_HDL.zip